【发布时间】:2017-12-29 00:08:10
【问题描述】:
我的情况是我需要输入一些字符,并且在读取特定字符(此处为 *)后,我需要跳出循环。
代码:
void main()
{
int i=0,temp=0;
char a[100];
printf("Enter the array\n");
for(i=0;a[i]!='*';i++)
{
scanf("%c",&a[i]);
}
}
即使我输入了“*”字符,它也不会退出循环。
我更改了如下所示的代码,它可以正常工作。
void main()
{
int i=0,temp=0;
char a[100];
printf("Enter the array\n");
for(i=0;;i++)
{
scanf("%c",&a[i]);
if(a[i]=='*')
break;
}
}
第一个代码有什么问题? 我正在使用 gcc 编译器。
【问题讨论】:
-
@James Z :代码没有问题,而且编译良好。但是问题来了,当我输入“*”时,它并没有从循环中出来。
-
@Rabbid76--您链接到的问题根本不是重复的。虽然换行符的处理是发布代码中的一个潜在问题,但这与这个问题中提出的问题无关。这里的实际问题与尝试使用未初始化变量的值(导致 UB)有关,这是由代码中的逻辑错误引起的。第二个示例以相同的方式处理换行符,OP 似乎对它的工作方式很满意。他们可能稍后会改变主意(当他们查看数组时),但这是一个不同的问题(这是您的重复问题)。