我有一个包含三行文字的.txt文件。
12345
67
890
我正在尝试使用我的getLine函数将每一行读入一个字符数组,然后打印出数组:
int main()
{
char line_1[100];
char line_2[100];
char line_3[100];
getLine(line_1,50);
getLine(line_2,50);
getLine(line_3,50);
int c;
int i=0;
while((c=line_1[i++]) != EOF){
putchar(c);
}
i=0;
while((c=line_2[i++]) != EOF){
putchar(c);
}
i=0;
while((c=line_3[i++]) != EOF){
putchar(c);
}
}
然而,这输出
12345
íOÌ@C@À'¡67
N¿'¡890
每次都有胡言乱语。我的getLine实现如下
int getLine(char line[], int size)//get a line of length size from stdin
{
int i=0;
int c=0;
while(((c=getchar()) !=EOF) && (c!='\n') && i<size)
{
line[i++]=c;
}
if(c=='\n') line[i++] =c;
line[i]='\0';
return i;
}
有没有人有任何可能出错的想法?
答案 0 :(得分:4)
getLine
函数正常工作,但print-loops是垃圾输出的原因。
使用
打印输出while((c=line_1[i++]) != EOF){
putchar(c);
}
但EOF
不是字符,当然也不是字符串终止符。
您应该将循环更改为
while((c=line_1[i++]) != '\0'){
putchar(c);
}
或
printf("%s", line_1);
或
fputs(line_1, stdout);