输出结构体中字符数组成员的值怎么多了个字符?????
代码如下:
#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];