对于它的类型,字符常量太长,有什么不对?

时间:2013-01-06 21:08:35

标签: 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);

}

2 个答案:

答案 0 :(得分:4)

单引号表示char字面值。通常这意味着一个字符。允许使用多字符文字,但标准表示它们的含义是实现定义的。由于字符太多,您的实现似乎将'stop'视为无效。

无论如何,我很确定你不打算写一个多字符文字。查看代码片段我认为您的意思是将输入读入字符串并使用strcmp来测试与字符串"stop"的相等性。

答案 1 :(得分:1)

除语法错误(''而不是“”)外,您可能想要比较字符串:

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