我是初学者,我写了一段代码:
#include<stdio.h>
char c;
char a[100]={0};
int i;
int main(void)
{
while(1)
{
i=0;
while(1){
if((c=getchar())!='\n'){
a[i]=c;
i++;
} else {
break;
}
}
printf("%s\n",a);
}
return 0;
}
现在我想添加一个 break 语句,当我键入 q 时,程序将中断。所以我的新程序是:
#include<stdio.h>
char c;
char a[100]={0};
int i;
int main(void)
{
while(1)
{
i=0;
while(1){
if((c=getchar())!='\n'){
a[i]=c;
i++;
} else {
break;
}
}
printf("%s\n",a);
if(getchar()=='q')break; /*i added this*/
}
return 0;
}
我知道因为 getchar() 冲突代码不正确,我该怎么做,添加 type q break 命令。非常感谢。
最佳答案
i am a starter and i have written a code
呃哦!开始了……首先,对于任何试图通过无指导的反复试验来学习的人来说,成功学习可移植的、符合标准的 C 编程语言的几率极低。有一本非常好的书可以用作指南,但您需要阅读并在偶然发现它们时做练习。如果您有兴趣,那就是 K&R2E。
任何类似于 char c; c = getchar();
是错误的,因为从 int
(getchar
返回)到 char
的缩小转换会丢弃错误处理信息.
getchar
返回的任何字符值都将作为 unsigned char
值转换为 int
,因此从技术上讲它是 更正确(尽管仍然不正确)使用该类型。
错误值以负整数形式返回,例如 EOF
,不要与字符值混淆,这正是您的代码因丢弃错误信息而做错的。
getchar
返回 int
,因此将值存储到 int
中,然后测试错误,然后,如果必须,将其转换为unsigned char
。
and now i have idea that i want to add a break statement that when i type q, the program will break.
根据前面的讨论,这样的要求是多余的,但是很容易合并如果您正确处理错误。只需插入一个额外的测试来匹配 q
到错误处理中,然后就可以了!
尽管如此,错误处理很可能已经解决了这个问题,因为大多数操作系统都有关闭 stdin
的机制,这会导致 getchar
返回EOF
,从而触发错误处理子句。例如,这通常通过在 Linux 中按 CTRL+d 或在 Windows 中按 CTRL+z 来实现。
总而言之,如果您还没有读过一本关于 C 语言的好书似乎并不能使您受益;一本关于为您最喜欢的类 Unix 操作系统编写控制台脚本的好书也会非常有益。
关于c - 使用 getchar 在 while 循环中添加 break 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42335374/