【发布时间】:2021-10-07 10:54:25
【问题描述】:
这是我编写的函数的一小部分,用于在有人输入“时间”后打印一个句子。但是当我编译它时,它说“警告:多字符字符常量”。我尝试使用双引号,它说“警告:指针和整数之间的比较”。现在,我很困惑。你可以帮帮我吗?谢谢!!!
char *status;
scanf("%s", status);
if (*status == 'time')`
{
printf("The time of the meet-up is 4 p.m.");
}
【问题讨论】:
-
你已经将很多错误打包到了那一小段代码中。 1.
status是一个未初始化的指针,你不能用scanf写它。声明为数组char status[64]或使用malloc动态分配。 2.'用于字符,"用于字符串。所以应该是"time"3。==不是 C 中比较字符串的方式。使用strcmp(status, "time") == 0。 -
您很困惑,因为您可能习惯于使用除C之外的其他语言进行编程。您误解了
status在使用scanf时会自动分配内存。这不会发生。此外,您必须对字符串使用双引号。您使用strcmp比较字符串,您不能为此使用==运算符。从基础开始学习 C,而不是假设它的工作方式类似于例如蟒蛇。 -
建议你暂停编码并阅读一本好的 C 书籍或教程。
-
您是否查看了具有相同警告的其他问题?
-
这行末尾还有一个反引号字符
if (*status == 'time')`,但我同意@kaylum,你需要花时间正确学习C,而不是仅仅学习C
标签: c if-statement pointers warnings