除第一个之外,结构成员的值无法正确打印

时间:2014-01-04 05:11:00

标签: c struct

我的计划:

#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下编译

5 个答案:

答案 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)

它刚刚分配未命中的比赛
它期望字符串

你给了你 'heeena'
收费到 “heeena”

然后百分比自动给出正确答案