我还在学习,所以如果我做的事情真的效率低下,请告诉我。否则,我更关心为什么这不起作用。
除非我使用引文,否则我无法写多个单词。有没有办法让我不必添加引号就可以写多个单词?
#include<stdio.h>
#include<stdlib.h>
main() {
char str[BUFSIZ];
FILE *f;
f = fopen(".todo","a");
printf("\n\nTODO list\n\n");
printf("~ ");
scanf("%s", str);
fprintf(f,str);
fprintf(f,"\n");
fclose(f);
}
我确实做了一个循环,所以我可以写多个东西。这就是我所做的:
for(;;) {
printf("~ ");
scanf("%s", str);
if(str == "break") {
fclose(f);
printf("\n");
exit(1);
}
fprintf(f,str);
}
但是,如果我输入“break”,它就不会退出。它没有写入.todo(我假设是因为没有运行fclose)如果不是这样的话我该如何退出?
答案 0 :(得分:1)
if(str == "break")
这在C中不起作用。要比较字符串,您需要使用strcmp
或strncmp
库函数。
看看这里是如何工作的,它返回的是什么等等。
答案 1 :(得分:0)
您可以将字符串与某些预定义的值(称为“break”)进行比较。因此,当用户输入break时,您可以使用strcmp
打破循环for(;;) {
printf("~ ");
scanf("%s", str);
if(strcmp(str,"break")==0) {
fclose(f);
printf("\n");
break;
}
fprintf(f,str);
}
其他方法是使用fgets
,getch()
或getchar()
检查空白行或仅enter
作为输入和分组