为什么在这个代码中没有执行if语句,却跳出while循环语句,求解,谢谢,
执行了,但是没有结果,主要是赋值语句有问题,改为如下:
scanf("%c",&arr[i]);
char arr[20]={'\0'};
scanf里头少了个&;
至于为什么跳出while我也看不出来
你也可以写为gets(arr)避免漏掉取地址符
你这代码问题挺多啊
首先,赋值的时候要加地址符&
其次,你给i赋值,那判断也应该是i啊,怎么先i++再判断,加完的地址还没有赋值呢
还有,你应该判断结束符是否是回车,\0是字符串的结束符,没法用键盘输入的
最后,你的代码并没有走break,而是抛了个异常直接退出了
修改如下,供参考:
#include<stdio.h>
#define N 1000
int main()
{
int i = 0;
char arr[20];
while (1)
{
scanf("%c",&arr[i]); //缺了 ‘&’
//i++; 这句移到最后
if (arr[i] == '\n')//这里判断的是换行符,不是结束符。
{
arr[i] = '\0'; //将换行符改为结束符
printf("%s ", arr);
printf("hello world");
break;
}
i++;
}
return 0;
}
你把==改成!=试试看。你的原来意思是如果里边是空的就执行if语句,但是你在前面已经输入了字符进去,就不可能是空的了。不知道解决了吗?