C 字符常量对于其类型太长,什么';怎么了?

C 字符常量对于其类型太长,什么';怎么了?,c,C,为什么我会得到这个,是getchar()函数吗 printf("Type stop to end connection"); while ((d=getchar()) != '\n' && i < MAXLENGHT){ buf2[i++] = d; } buf2[i] = '\0'; dfg = strlen(buf2);} while (d != 'stop'); // here the error close(sockfd); exit(0); pr

为什么我会得到这个,是
getchar()
函数吗

printf("Type stop to end connection");
    while ((d=getchar()) != '\n' && i < MAXLENGHT){
    buf2[i++] = d;
}
buf2[i] = '\0';
dfg = strlen(buf2);}
while (d != 'stop'); // here the error
close(sockfd);
exit(0);
printf(“类型停止到端连接”);
而((d=getchar())!='\n'和&i

}单引号表示
char
literal。通常这意味着一个字符。允许使用多字符文字,但标准规定其含义由实现定义。您的实现似乎认为
'stop'
由于字符太多而无效


在任何情况下,我相当肯定您不打算编写多字符文字。查看代码片段,我认为您的意思是将输入读入字符串,并使用strcmp测试是否与字符串相等
“stop”
除了语法错误(“”而不是“”),您可能希望比较字符串:

while (strcmp(buf2, "stop") != 0) ...

show-us变量和常量的声明…
'stop'
不一定无效,多字符文字是语言的一部分(但具有实现定义的语义)。警告“字符常量对于其类型来说太长”很可能只是意味着
sizeof(int)<4
。(当然,
strcmp
加上
“stop”
是正确的选择。)@Daniel直到今天我才知道多字符文字。谢谢你纠正我。这就是不断给予的语言!