各位朋友,可否解我疑惑,

为什么在这个代码中没有执行if语句,却跳出while循环语句,求解,谢谢,

img

img

执行了,但是没有结果,主要是赋值语句有问题,改为如下:

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语句,但是你在前面已经输入了字符进去,就不可能是空的了。不知道解决了吗?