发布时间: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