【发布时间】:2021-02-21 02:13:05
【问题描述】:
我有一个 c 程序,在我的程序中我要求用户输入两次。第一次输入函数(我自己的)运行良好,但第二次 getchar() 函数似乎没有运行。我自己研究了这个问题,我发现了一些与尾随字符有关的东西,但我仍然对我的问题感到困惑。我尝试创建第二个函数,如果给定的输入是 \n,该函数会一直要求输入,并且我还尝试使用额外的 getchar() 函数来删除输入流中存储的字符(我仍然不完全理解这一点)。我也尝试过其他的东西,但它们涉及到我更大的结构,而不是 getchar() 函数本身
我的输入功能:
int getInput(char s[])
{
char c;
int i = 0;
while((c = getchar()) != EOF){
s[i] = c;
i++;
}
return i;
}
我的主要功能:
main()
{
printf("Enter a string to convert: \n");
char s[1000];
int len = getInput(s);
char t[1000];
printf("Press 1 to convert from escape to real, or 2 to convert from real to escape: ");
char a[1];
getInput(a);
printf("%d\n", a[0]);
if(a[0] == '1') {
real(s, t, len);
} else if (a[0] == '2') {
escape(s, t, len);
} else {
printf("\nRestart the program and enter a 1 or a 2\n");
exit(0);
}
printf("\n%s\n", t);
}
谢谢
【问题讨论】:
-
EOF 是文件的 end,因此拥有多个 EOF 没有多大意义。你应该重新考虑设计。还要注意
getchar()返回一个int,所以存储返回值的变量应该是int。当使用char时,可能很难区分字符和EOF。