大一C语言字符数组之译密码

问题遇到的现象和发生背景

img

问题相关代码,请勿粘贴截图
#include<stdio.h>
#include<string.h>
int main()
{
    char m[100];
    int t,i;
    while(gets(m)!=EOF){
        t=strlen(m);
        for(i=0;i<t;i++){
            if(m[i]>='A'&&m[i]<='V'){
                printf("%c\n",m[i]+4);
            }
            else if(m[i]>='W'&&m[i]<='Z'){
                printf("%c\n",m[i]-22);
            }
            else if(m[i]>='a'&&m[i]<='v'){
                printf("%c\n",m[i]+4);
            }
            else if(m[i]>='w'&&m[i]<='z'){
                printf("%c\n",m[i]-22);
            }
            else{
                printf("%c\n",m[i]);
            }
        }
    }
    return 0;
}


运行结果及报错内容

[Warning] comparison between pointer and integer [enabled by default]
这合理吗?求指出错误

我试着把你代码里的while(gets(m)!=EOF)改成了while(gets(m)!=NULL),发现能够正常运行,截图如下

img

你可以试试,怀疑就是你用错了EOF,这玩意好像是用来读取文件的