字符型常量过长

w[]=='exclaim' 提示字符型常量过长
在网上查了查,改成 ,“exclaim” 的形式,虽然提示没有出错,但运行的时候有问题。如果要输入较长的字符应该怎么定义?
main()
{
int m=0;
char w[5];
loop:printf("\n*******************Word Test********************\n\n");
sleep(1);
printf("No.1 hu1 han3:");
scanf("%c",&w[0]);
if (w[0],"exclaim")
{
m++;
printf("good!\n");
}
else
{
printf("wrong!\n");
}
sleep(1);
printf("No.2 sheng1 men4 qi4:");
scanf("%c",&w[1]);
if (w[1],"sulk")
{
m++;
printf("good!\n");
}
else
{
printf("wrong!\n");
}
sleep(1);
printf("No.3 ke3 ai4:");
scanf("%c",&w[2]);
if (w[2],"adorable")
{
m++;
printf("good!\n");
}
else
{
printf("wrong!\n");
}
sleep(1);
printf("No.4 shi1 luo4:");
scanf("%c",&w[3]);
if (w[3],"upset")
{
m++;
printf("good!\n");
}
else
{
printf("wrong!\n");
}
sleep(1);
printf("No.5 heng2 ding4 de3:");
scanf("%c",&w[4]);
if (w[4],"constant")
{
m++;
printf("good!\n");
}
else
{
printf("wrong!\n");
}
sleep(1);

printf("Your mark:%d",m);
sleep(5);
clrscr();
goto loop;
getch();
}
最新回答
但许星辰月

2025-03-30 10:10:15

w是一个char型数组,而w[0]你可以看做是一个char型变量,而你在进行比较时是与字符进行比较的所以会出错, scanf("%c",&w[0]);
if (w[0],"exclaim")
这个你好好看看.这时w[0]里只能存储一个字符,而不是字符串.
追问
那如果我想让w和字符串比较应该怎么办
追答
定义一个char型数组,数组长度一定要够长,因为数组中的每一个元素都是一个字符,而且字符串是以'\0'作结束标致的,如如果你想输入hello那么存储这个字符串的数组至少在有6个元素,在输入的时候可以选择使用字符串输入函数gets(),也可以使用格式输入函数scanf(),里面的控制符是%s.
追问
举个例子好吗,谢谢!
追答
#include "stdio.h"
#include "string.h"
main()
{char a[10];
printf("请输入字符串:");
gets(a);
if(strcmp(a,"hello")==0)
printf("两字符串相等");
else
printf("两字符串不相等");
}
战场

2025-03-30 02:48:23


如果是C语言的话,正确写法应该是

if(!strcmp(hand1[10],"right") && !strcmp(hand[10],"right"))