c - 如何循环用户输入并将其复制到文件,直到使用 C 输入 "exit"字符串?

标签 c string console user-input

我想编写一些小程序,当最大输入为 100 个字符时从用户(使用控制台)获取字符串,并且当用户按下 enter 时 - 它会将输入复制到某个文件。 我想在用户输入字符串“exit”时退出循环

例如: “你好你好吗?” “巴拉巴拉” “导出” 我只是不知道如何让它工作——我应该使用 scanf 吗?获取字符? fgets?

char* buf ;
int i;


 buf = (char*)calloc(100, sizeof(char));
 while(1) 
  {
     fgets(s, sizeof(s), stdin);
     if (strcmp(s , "exit") == 0)
       break;
     else
   ...write to file...
   }

我需要手动输入“\0”吗?

谢谢!

最佳答案

fgets() 很好,但在某些实现中,它将结尾的换行符 (\n) 放在行尾。您必须删除它才能进行比较,或者准备比较以接受 "exit""exit\n":

if (strcmp(s , "exit") == 0 || strcmp(s , "exit\n") == 0)
   break;

fgets(s, sizeof(s), stdin);
char *p = strchr(s, '\n');
if (p) *p = 0;

if (strcmp(s , "exit") == 0)
    break;

旁注:除非您打算将字符串返回给调用函数,否则根本不需要使用 calloc()。改为使用自动数组:

char s[0x100]; // or whatever

关于c - 如何循环用户输入并将其复制到文件,直到使用 C 输入 "exit"字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16254092/

相关文章:

android - 从 R.string 获取 TextView 字符串 ID

ruby - 如何在 ruby​​ 中使用 File.Open 打开存储在变量中的文件?

python - 在单线程 Python 脚本中有一个控制台

windows - 在 Windows 上崩溃后如何保持 subprocess.Popen 控制台打开?

c - 如何在 C 中打印一个数组覆盖另一个数组?

c# - 如何从 unity C# 访问自定义 C 类型定义、枚举?

c - 如何通过 c 中的字符串连接创建字符串文字作为函数参数

c - 使用 Uint32_t 读写字符串

c - 如何在我的计算机中用 C 查找已安装驱动程序的名称?

c - 字符串指针,统计单词中的字母数量