C语言关于带prinf函数的输入输出我准确键入是,但为什么可以';我看不到输出吗? #包括 内部主(空) { 字符名[40]; scanf(“%s”,名称); 如果(名称=“是”) { printf(“%s”,名称); } 返回0 }
您需要使用C语言关于带prinf函数的输入输出我准确键入是,但为什么可以';我看不到输出吗? #包括 内部主(空) { 字符名[40]; scanf(“%s”,名称); 如果(名称=“是”) { printf(“%s”,名称); } 返回0 },c,C,您需要使用strcmp进行字符串比较 替换 #include<stdio.h> int main(void) { char name[40]; scanf("%s",name); if(name == "yes") { printf("%s",name); } return 0 } 与 strcmp返回 如果两个字符串相同(相等),则为0 如果第一个不匹配字符的ASCII值小于第二个字符,则为
strcmp
进行字符串比较
替换
#include<stdio.h>
int main(void)
{
char name[40];
scanf("%s",name);
if(name == "yes")
{
printf("%s",name);
}
return 0
}
与
strcmp
返回
=
未定义用于字符串(或任何其他数组)比较-您需要使用标准库函数strcmp
来比较字符串:
if(strcmp(name,"yes") == 0)
或
strcmp
有点不直观,因为如果字符串内容相等,它将返回0,因此测试的感觉将是错误的。如果第一个字符串按字典顺序小于第二个字符串,则返回负值;如果第一个字符串按字典顺序大于第二个字符串,则返回正值
您需要#包括,才能使用strcmp
要比较非字符串的数组,请使用memcmp
搜索字符串比较问题,你是在比较指针,而不是字符串。非常感谢。我能问一下为什么(name==“yes”)不可用吗?非常感谢,我能问一下为什么(name==“yes”)不可用吗?@richbak:这与C如何处理数组表达式有关-在大多数情况下,数组类型的表达式“衰减”为指针,因此,最后比较的是字符串的地址,而不是它们的内容。这种行为是有原因的,但它超出了评论的范围。
if(strcmp(name,"yes") == 0)
if ( strcmp( name, "yes" ) == 0 )
if ( !strcmp( name, "yes") )