【发布时间】:2013-07-23 19:17:01
【问题描述】:
我正在尝试接收用户输入字符串并将其写入文件。然而,无论我做什么,输出总是从字符串中删除空格。
我认为使用gets()/puts() 的全部目的是读取/输出字符串中的所有字符,直到遇到换行符。
谁能告诉我我做错了什么??
int main (void){
char userInput[100];
char filename[50];
FILE *cfPtr;
printf("Enter name of file to open: ");
scanf("%s", &filename);
cfPtr = fopen(filename, "a+");
printf("Enter text to add to file: \n");
fgets(userInput, 100, stdin);
while (strcmp( userInput, "0") != 0) {
fputs( userInput, cfPtr);
fgets(userInput, 100, stdin);
} // end while
fclose( cfPtr );
system("pause");
} // end main
【问题讨论】:
-
"0" 不是换行符。它是“0”。您正在将整个字符串与“0”进行比较,而不仅仅是一个字符。也许你的意思是 fgetc?
-
对不起,我应该解释一下。我正在对照“0”检查字符串,以便在用户输入零时程序将退出。否则,除 0 以外的任何内容都将写入文本文件。
-
我仍然不认为 strcmp 会起作用,除非用户要输入一个“0”来结束?
-
是否需要清除或刷新用户输入?
-
正确,用户输入单个“0”结束。