即使没有用户输入,字符串也有内容

2024-02-15

我试图“捕获”用户的键盘输入,这意味着代码将阻止他们输入某些字符,在这种情况下会阻止输入数字和特殊字符。

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>

char buffer[30];
void in_text();

int main(void)
{
in_text();
printf ("\nThe string you entered is: %s", buffer);

    return 0;
}


void in_text(void)
{
char buffe[30]; 
char c1;
int x = 0, hit = 0;

printf("Enter string: ");


while (hit!=1)
{   
    c1 = getch();

    if (c1=='\b' && x!=0)
    {
        buffe[--x] = '\0';
        printf ("\b \b");
    }

    if (isalpha(c1) || isspace(c1) && c1!='\r') 
    {
        buffe[x++] = c1;
        buffe[x+1] = '\0';
        printf("%c", c1);
    }   

    if (c1=='\r' && strlen(buffe)==0)
    {
        buffe[x+1] = '\0';
    }   
    else if (c1=='\r' && strlen(buffe)>1)
    {
        printf ("%d", strlen(buffe));
        printf ("\n%s", buffe);
        hit = 1;
    }   
    else{
    }       
}

strcpy(buffer, buffe);

return 1;
}

这段代码试图模仿scanf可以看到的输入样式,然后按退格键删除先前输入的字符。我想“捕获”回车键,以便当用户按“Enter”键时,程序检查当前字符串(缓冲区)是否至少包含一个有效字符,并且当程序检查输入并发现用户按下按 Enter 键且字符串不包含任何内容,则循环继续。

我的代码的问题是,当我按 Enter 键时,程序启动后立即strlen函数返回一个大于 0 的值,我认为这是不正常的,因为除了用户按下的“Enter”键之外,还没有用户输入。

对此有什么想法吗?


可能会尝试

char buffe[30] = {0};

(不过我还没有尝试过)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

即使没有用户输入,字符串也有内容 的相关文章

  • C# 打印问题(RichTextBox)

    我想打印我的 RichTextBox eintragRichTextBox 的内容 我现在有这个代码 private void druckenPictureBox Click object sender EventArgs e PrintD
  • 使用 CLion 进行 OpenCV Windows 设置

    我想在 Windows 上为 CLion IDE 设置 OpenCV 我尝试使用 OpenCV 3 1 和 2 4 得到相同的结果 我有 Windows 10 64 位 CLion 使用 cygwin 环境 到目前为止我做了什么 1 从Op
  • 多个源的 makefile

    在学习 make 文件时 我试图为多个源目录编写一个 make 文件 似乎我在某个地方错了 这是我的代码结构 directory common fun2 c inc fun h src fun1 c main c 这是我的生成文件 CC c
  • 添加 Nullable int 时保持 null?

    我想添加可为空的int 并保留null当所有值都是null 我想要这个结果 1 2 3 1 null 1 null null null O null 0 问题是 如果我将一个值与 null 相加 结果为 null int i1 1 int
  • 在路由mvc 4中添加公司名称

    我一直在尝试为 Facebook 等用户提供在 URL 中添加公司名称的选项 http localhost 50753 MyCompany Login 我尝试过不同的网址 但没有成功 routes MapRoute name Default
  • CSharpRepl emacs 集成?

    我碰巧知道莫诺CSharpRepl http www mono project com CsharpRepl 是否有 emacs csharp 模式使用它在一个窗口中运行 REPL 并像 python 模式一样在另一个窗口中编译 运行 C
  • 从模板切换传递的类型

    在 C 中是否可以检查传递给模板函数的类型 例如 template
  • C# 5 async/await 线程机制感觉不对?

    为什么让调用线程进入异步方法直到内部 等待 一旦调用异步方法就生成一个线程 这不是更干净吗 这样您就可以确定异步方法会立即返回 您不必担心在异步方法的早期阶段没有做任何昂贵的事情 我倾向于知道某个方法是否要在 我的 线程上执行代码 不管是堵
  • 访问 ascx 文件中的母版页控件

    我有一个母版页文件 其中包含 2 个面板控件中的 2 个菜单 我还使用控件来检查用户是否登录并获取用户类型 根据我想要显示 隐藏面板的类型 控件本身不在母版页中引用 而是通过 CMS 系统动态引用 我想在用户控件中使用findcontrol
  • 增强精神、递归和堆栈溢出

    为什么下面的代码在运行时崩溃 它会给出堆栈溢出错误 include
  • C# 编译器不会优化不必要的强制转换

    前几天 在写答案的时候这个问题 https stackoverflow com questions 2208315 why is any slower than contains在这里 关于溢出 我对 C 编译器感到有点惊讶 它没有按照我的
  • UI 函数在快速事件完成之前触发

    我有一个停靠在 Silverlight 应用程序中的 Web 浏览器框架 有时会在其上弹出全窗口 XAML Silverlight UI 元素 我已经或多或少修复了一个老问题 即 Web 框架的内容似乎与 Silverlight 内容不能很
  • 使用 C# 和 wpf 创建类似 Dock 的应用程序

    我需要创建一个与我们购买笔记本电脑时获得的应用程序类似的应用程序 仅当鼠标指针到达窗口顶部时它才可见 那么我怎样才能使用 C 4 0 来做到这一点呢 http www notebookcheck net uploads pics win2
  • 如何使用 NPOI 按地址(A1、A2)获取 Excel 单元格值

    我有一个 Excel 单元格地址 例如 A1 A2 如何使用 C 中的 NPOI 框架以编程方式访问此单元格 我找到的一些 Java POI 示例代码 CellReference cr new CellReference A1 row my
  • 使用 GCC 生成可读的程序集?

    我想知道如何使用GCC http en wikipedia org wiki GNU Compiler Collection在我的 C 源文件中转储机器代码的助记符版本 这样我就可以看到我的代码被编译成什么 你可以使用 Java 来做到这一
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • Linux mremap 不释放旧映射?

    我需要一种方法将页面从一个虚拟地址范围复制到另一个虚拟地址范围 而无需实际复制数据 范围很大 延迟很重要 mremap 可以做到这一点 但问题是它也会删除旧的映射 由于我需要在多线程环境中执行此操作 因此我需要旧映射能够同时使用 因此稍后当
  • 为什么以下 C 程序会出现总线错误?

    我认为这是第一个失败的 strtok 调用 好久没写C了 有点不知所措 非常感谢 include
  • INotifyPropertyChanged 和 propertyName

    我一直不确定它的含义propertyName实施时INotifyPropertyChanged 所以一般来说你实现INotifyPropertyChanged as public class Data INotifyPropertyChan
  • 如何使用placement new重新初始化该字段?

    我的课程包含字段 private OrderUpdate curOrderUpdate 我一遍又一遍地使用它 经常需要重新初始化 for int i 0 i lt entries size i auto entry entries i ne

随机推荐

  • Ruby 如何处理字节/二进制?

    我正在尝试通过套接字发送一系列二进制字节 以满足我公司使用的特定标准 我公司中没有人以前使用过 Ruby 来实现这一点 但在其他语言中 他们一次发送一个字节的数据 通常使用某种 打包 方法 无论如何 我找不到动态创建二进制文件 或者根本无法
  • Flexslider 手动控件不起作用

    我已经使用 Flexslider 创建了一个滑块 并且尝试使用 manualControls 创建导航菜单 但链接不起作用 以下是 flexslider 和滑块 导航本身的代码 柔性滑块 滑块和
  • os.system 中的变量

    我在用os systemPython 中的方法在 Linux 中打开文件 但我不知道如何在 os system 命令内传递变量 a import os a 4 os system gedit a test txt 如何在命令中将变量作为整数
  • C++ 中的整数字节交换

    我正在为我的 C 课程做家庭作业 我正在研究的问题如下 编写一个函数 它接受一个无符号短整型 2 个字节 并交换字节 例如 如果交换后 x 258 00000001 00000010 则 x 将为 513 00000010 00000001
  • AngularJS 应用程序:从 JSON 加载数据一次并在多个控制器中使用它

    我正在开发一个使用 AngularJS 作为框架的移动应用程序 目前我有一个与此类似的结构 app config routeProvider function routeProvider routeProvider when templat
  • 我无法在 TextView 中显示计时器

    我创建了一个带有倒计时器的列表视图 下面是代码 public class TicketAdapter extends ArrayAdapter
  • 如何避免详细日志记录的影响?

    如何缓冲详细的日志记录语句 即logging debug 直到Python进程结束 这需要自定义记录器吗 我当前的设置使用类似于的配置文件Scott s https stackoverflow com questions 4441842 p
  • Hibernate 中 SchemaUpdate 和 SchemaExport 的区别

    Hibernate 中的 SchemaUpdate 和 SchemaExport 有什么区别 架构更新 http docs jboss org hibernate orm 3 3 api org hibernate tool hbm2ddl
  • 正则表达式匹配后面没有某个字符串的字符串

    我有一个字符串块 如下所示 1 While EngineSpeed b4tgup 2 While AcceleratorPedal desddd lt 2 3 While AcceleratorPeda desddd lt 2 4 Whil
  • Mac El Capitan 中忽略 /etc/hosts (10.11.5)

    我正在尝试将现有网址重定向到我的子网上的远程计算机 为此 我将以下内容放入 etc hosts 192 168 1 249 holub com 并刷新 DNS 缓存 sudo dscacheutil flushcache sudo Kill
  • 如何防止模糊过渡时图像闪烁?

    如何防止滤镜过渡结束时出现闪光 模糊效果 我使用的是铬 下面的片段显示了问题 window on load function event setTimeout function sec addClass active 1000 sec ma
  • 还可以调试GWT吗?

    只有我一个人这样吗 或者甚至可以再运行 调试 GWT 应用程序吗 全新安装 Google Plugin for Eclipse Juno 使用 GWT GAE 创建新的 Web 应用程序 运行 调试 失败 这是在 Mac 上运行的 带有 C
  • 以弹簧形式绑定一组

    我正在尝试将弹簧表单与命令对象中的集合绑定 在我的指挥课上实例我将集合定义为 private Set
  • 如何以ls格式显示文件和文件夹大小

    ls l 将显示所有文件和文件夹的详细信息 但文件夹大小不正确 始终显示 4 0k 那么如何将文件 文件夹显示为ls l除了具有正确大小的文件夹之外的格式 谢谢 ls l 格式 drwxr xr x 9 jerry jerry XXX 0K
  • 为什么 KNN 使用自定义指标会很慢?

    我使用的数据集包含大约 200k 对象 每个对象都有 4 个特征 我通过 K 最近邻 KNN 和欧几里德度量对它们进行分类 过程大约在 20 秒内完成 最近我有一个使用自定义指标的理由 也许会取得更好的结果 我已经实现了自定义指标 并且 K
  • Flex 中的异步函数调用

    Flex 中可以异步调用函数吗 我想定期解析文件而不阻塞应用程序的其余部分 建议的方法是什么 Actionscript 不支持多线程 我认为这才是您真正要问的问题 虽然该功能不是 ActionScript 或 Flex 固有的 但您可以使用
  • 这种类型的内存是在堆还是堆栈上分配的?

    在 C 上下文中 这并不重要 class Foo private int x 100 public Foo 我所学到的告诉我 如果您像这样创建 Foo 的实例 Foo bar new Foo 然后数组 x 被分配在堆上 但是如果您像这样创建
  • 使用预先签名的 url 将 PUT 到 S3 会出现 403 错误

    我正在使用 Node 获取 S3 的 presignedRUL 以便将图像放入 S3 存储桶 var aws require aws sdk Request presigned URL from S3 exports S3presigned
  • 中的多行输入

    我以表格形式输入此文本
  • 即使没有用户输入,字符串也有内容

    我试图 捕获 用户的键盘输入 这意味着代码将阻止他们输入某些字符 在这种情况下会阻止输入数字和特殊字符 include