读书人

输出结构体中字符数组成员的值如何多了

发布时间: 2012-02-11 09:51:34 作者: rapoo

输出结构体中字符数组成员的值怎么多了个字符?????
代码如下:
#include <stdio.h>

main()

{

struct{

char name[8];

int age;

char sex[8];

char depart[20];

float wage1, wage2, wage3, wage4, wage5;

}a;




FILE *fp;

float wage;

char c= 'Y ';

fp=fopen( "wage.dat ", "w ");

while(c== 'Y '||c== 'y ')

{

printf( "\nName: ");

scanf( "%s ", a.name);

printf( "%s\n ",a.name)/*a */

printf( "Age: ");

scanf( "%d ", &a.age);

printf( "%s\n ",a.name)/*b */

printf( "Sex: ");

scanf( "%s ", a.sex);

printf( "Dept: ");

scanf( "%s ", a.depart);


printf( "Wage1: ");

scanf( "%f ", &a.wage1);

printf( "Wage2: ");

scanf( "%f ", &a.wage2);

printf( "Wage3: ");

scanf( "%f ", &a.wage3);

printf( "Wage4: ");

scanf( "%f ", &a.wage4);

printf( "Wage5: ");

scanf( "%f ", &a.wage5);

wage=a.wage1+a.wage2+a.wage3+a.wage4+a.wage5;

printf( "The sum of wage is %6.2f\n ", wage);/*ÏÔʾ½á¹û*/

printf( "%s------%d-------%s\n ",a.name,a.age,a.sex);

fprintf(fp, "%10s%4d%4s%30s%10.2f\n ", /*½á¹ûдÈëÎļþ*/

a.name, a.age, a.sex, a.depart, wage);

while(1)

{

printf( "Continue? <Y/N> ");

c=getchar();

if(c== 'Y '||c== 'y '||c== 'N '||c== 'n ')

break;



}

}

fclose(fp);

}
在VS2006上编译,当输入name为zhanghua 的时候,为什么a处和b处显示的a.name的值不一样,b处的输出多个字符{


[解决办法]
a.name只有8字节,zhanghua是8字节,结尾符\0没地方用了。
[解决办法]
char name[8]; //把这个地方改大一些,比如 char name[20];

读书人网 >C语言

热点推荐