如果用户输入空字符串名称,则循环应该中断。
void Put_txt(void){
FILE *f;
f = fopen("table.txt", "wt");
char name[255];
int num;
int value;
while(name == /*???*/){
scanf("%s",name);
scanf("%d", &num);
scanf("%d", &value);
fprintf(f,"%s", name);
fprintf(f,"\t%d",num);
fprintf(f,"\t%d\n",value);
}
fclose(f);
}
或许
“介绍”在哪里以及如何?首先,您正在检查一个根本没有初始化的字符串。其次,
scanf
您接下来使用的功能原则上不允许您“输入空字符串”。scanf
C 标准库中的格式化组输入函数要么读取非空数据序列,要么根本不读取任何内容而失败。如果您想让用户能够“输入空字符串”,请使用函数
fgets
并检查结果是否等于字符串"\n"
请记住,混合格式化和未格式化输入有其自身的怪癖。您
scanf
的将在输入缓冲区中留下换行符,上面fgets
将其解释为“空行输入”并导致循环终止。scanf
和输入缓冲区之间fgets
必须被清除。最好不要混合格式化和未格式化的输入。