所以,这是一个非常基本的程序,我希望允许用户在文本文件中输入最多10个单词。
我想制作一个退出条款,如果用户输入特定单词,程序将停止
我正在尝试使用strcmp
并将“退出”与用户输入的字词进行比较。
如果两者都匹配,则终止。我知道如果两者都相同则返回0,但是我无法写:
{
char word[10];
FILE *fp;
int x;
int words = 0;
fp = fopen("c:\\CTEMP\\ExamProg1.txt", "w+");
{
for (x = 0; x < 10; x++)
{
printf("\nType the word you want to add. Type exit to terminate: ");
scanf("%s", word);
if (strcmp(word, "exit") == 0)
{
break;
}
fprintf(fp, "%s\n", word);
words++;
}
fclose(fp);
}
scanf_s("%d");
}
如果输入退出时如何继续中断程序,而不是必须两次插入“退出”?
答案 0 :(得分:4)
您的代码存在许多问题:
scanf("%s", &word);
因为字符串本身就是指针或数组,所以在调用扫描输入的scanf
调用中不应出现address-of运算符一个字符串。只需使用:scanf("%s", word);
。
strcmp(word, "exit")=0
。 =
运算符是赋值运算符,而不是比较(您希望有strcmp(word, "exit") == 0
)。您对“退出”一词的测试失败,因为您没有正确检查strcmp
的返回值。
答案 1 :(得分:2)
您可能希望阅读以下字词:
scanf("%99s", word); // where 99 == your buffer size - 1
//word is probably a pointer in your example so no &
(scanf("%s",buf)
,与gets(buf)
一样,可能存在巨大的安全隐患)
然后与"exit"
进行比较,如下所示:
if (strcmp(word, "exit")==0)
这是一个有效的虚拟例子:
int main()
{
char buf[10];
while(EOF!=scanf("%9s", buf)){
printf("s=%s\n", buf);
if(strcmp("exit",buf)==0){
puts("<exit>");
exit(0);
}
}
if(feof(stdin))
puts("<EOF>");
else
puts("<ERROR>");
}