我想编写一些从用户(使用控制台)获取字符串的小程序,当最大输入为100个字符时,以及当用户按下输入时 - 它会将输入复制到某个文件。 我想退出循环时,用户输入字符串“退出”如何循环用户输入并将其复制到文件,直到使用C输入“退出”字符串?
例如: “嗨,你好吗?” “bla bla” “exit” 我只是不知道如何使它工作 - 我应该使用scanf吗? getchar函数?与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”吗?
谢谢!
谢谢!另一件事,我不太确定 - 如果我有一个数组,我想把这个字符串放在那里 - 我现在应该抛出每封信并复制它:arr [i] = s [i]?直到我到'\ 0'? – user1386966 2013-04-27 16:07:13
@ user1386966是的,但不要手动执行此操作。 'strncpy(dest,buf,destsize);',但是请阅读'strncpy()'的手册页,因为如果你不检查它的返回值是不安全的。 – 2013-04-27 16:08:35
“某些实现”是符合实现的超集,“在换行符(**被保留**)之后不会读取其他字符”。如果有空格(根据size参数),'fgets'必须将新行存储在缓冲区中。 – 2013-04-27 16:17:02