【发布时间】:2023-03-04 15:13:01
【问题描述】:
当我在case 1 之后(换句话说,在一个while 循环之后)调用case 2 时,下面的代码会产生两个笑脸。但是printSentence(); 的工作原理应该在case 1 中。
#include <stdio.h>
#include <string.h>
char *enterSentence();
void printSentence(char *);
char *sentence;
int willContinue = 1;
main() {
while (willContinue) {
int a;
scanf("%d", &a);
switch (a) {
case 1:
getchar();
sentence = enterSentence();
printSentence(sentence);
break;
case 2:
getchar();
printSentence(sentence);
break;
case 3:
willContinue = 0; //exit
break;
}
}
}
char *enterSentence() {
char temp[999];
gets(temp);
return temp;
}
void printSentence(char *asd) {
puts(asd);
}
.
. //more code
.
我想知道这里有什么问题,感谢您的帮助..
【问题讨论】:
-
sentence似乎没有在每次循环后被清除。 -
哦!不要使用
gets()。它不能安全使用,并且已从最新的 C 标准 (C11) 中删除。
标签: c