输出时出现乱码

发布时间:2019-07-29 18:31:17

#include<stdio.h>#include<stdlib.h>#include<string.h>void pai(char a[283][30]){int i,j;char *p,b[283];p=b;for(i=0;i<282;i++)    for(j=0;j<282-i;j++)    if(strcmp(a[j],a[j+1])>0)    {    strcpy(p,a[j]);    strcpy(a[j],a[+j+1]);    strcpy(a[j+1],p);    }}int main(){    char a[283][30],b[283][100];    int i=0,j;    FILE *fp;    if((fp=fopen("d:\\pinyin.txt","r"))==NULL)//打开文件    {        printf("Can not open file!\n");        exit(1);    }    while(!feof(fp))//读取到文件尾    {        fscanf(fp,"%s",a[i]);        i++;    }for(i=0;i<283;i++)    strcpy(b[i],a[i]);for(i=0;i<283;i++)//加了这步之后出现了一些乱码     {    for(j=strlen(b[i]);j<30;j++)  b[i][j]=' ';  }// pai(a);for(i=0;i<283;i++)strcat(b[i],a[i]);for(i=0;i<283;i++)    {    printf("%s\n",b[i]);    }return 0;}

推荐回答

C语言字串必须以'\0'结尾的,你在后面加空格后,要重设结束标记的

 for(j=strlen(b[i]); j<30; j++)  

              b[i][j]=' ';     // pai(a);

///这里加

b[i][30]='\0';

b[i][j]='\0'; //j就是30

以上问题属网友观点,不代表本站立场,仅供参考!