首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-02-11 
输出结构体中字符数组成员的值怎么多了个字符?????代码如下:#includestdio.hmain(){struct{charname[8]

输出结构体中字符数组成员的值怎么多了个字符?????
代码如下:
#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);/*&Iuml;&Ocirc;&Ecirc;&frac34;&frac12;á&sup1;&ucirc;*/  

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

                              fprintf(fp,   "%10s%4d%4s%30s%10.2f\n ",     /*&frac12;á&sup1;&ucirc;&ETH;&acute;&Egrave;&euml;&Icirc;&Auml;&frac14;&thorn;*/  

                                                        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];

热点排行