【发布时间】:2012-10-31 11:56:37
【问题描述】:
我有一个包含三行文本的 .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 终止你的字符串
-
您在 getLine 中用 '\0' 终止字符串,但在 main() 中检查 EOF。在 main 中,您应该检查实际的终止字符 ('\0'),而不是 EOF 字符。检查EOF没有意义.. :)