C语言 strcat函数输出错位

来源:百度知道 编辑:UC知道 时间:2024/05/31 00:41:53
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int i,j, len=0;
char filename[10][20];
char tmp[20];
char buffer[2];
char *comma=",";
FILE *fp;

if((fp=fopen("01in.txt","r"))==NULL)
{
printf("Can't open this file.");
exit(0);
}
while(!feof(fp))
{
/*memset(filename[len], 0, 256);*/
fgets(filename[len],10, fp);
len++;
}
fclose(fp);

for(i=0;i<len-1;i++)
{ itoa(i,buffer,10);
strcat(filename[i],comma);
strcat(filename[i],buffer);
}

for(i=0;i<len-1;i++)
printf("%s",filename[i]);
}
输出为:
bb1
,0ccc.txt
,1bb1.doc
,2tt.doc
,3aa
,4
正确的输出应该是:
bb1,0
ccc.txt,1
bb1.doc,2
tt.doc,3
aa,4

fgets自动在字符串末尾加上\n的
当然就是这样的输出了
改用fscanf("%s",filename[len]);
再在
strcat(filename[i],comma);
strcat(filename[i],buffer);
后面加一句
strcat(filename[i],"\n");

strcat(filename[i],buffer);
用到这一句为止,buffer都没有初始化,它存储的是随机值。