我的计划:
#include <stdio.h>
#include <string.h>
struct student
{
int id;
char name[30];
float percentage;
};
int main()
{
struct student s={1, 'heeena', 30};
printf("ID is %d\n name is %s\n percentage is %f",s.id,s.name,s.percentage);
return(0);
}
上述程序的输出是:
ID is 1
name is a...
percentage is 0.000000
代替...
,我在这里无法绘制非ASCII字符。如何更正程序,以便显示结构的预期值,如下所示?
ID is 1
name is heeena
percentage is 30
我正在使用gcc
在Ubuntu 12.04下编译答案 0 :(得分:3)
此处的警告是
character constant too long
在C和C ++中,字符代码使用单引号编写,例如'a'给出字母'a'(67)的ASCII码,'\ n'给出换行符(10)的ASCII码。如果使用单引号括起多个字符,则会发生此错误。
因此替换以下行
struct student s={1, 'heeena', 30};
与
struct student s={1, "heeena", 30};
答案 1 :(得分:1)
可能是拼写错误..您必须将""
放在char[]
struct student s={1, "heeena", 30};
答案 2 :(得分:1)
我的事
的strcpy(s.name “heeena”);
是定义s.name的最佳方式。
答案 3 :(得分:1)
你正在使用一个字符数组,这是一个字符串。要提供单个字符的输入,您可以使用此表单输入(使用单引号)
char c = 'x';
这样就给c字符变量赋值x;
并且对于字符数组(即字符串),您需要使用双引号
char s[30]="heena";
所以在上面的程序中你改变了输入的格式。将heena上的单引号更改为双引号。
答案 4 :(得分:0)
它刚刚分配未命中的比赛
它期望字符串
然后百分比自动给出正确答案