3

我有一个包含三行文本的 .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;

}

有谁知道可能出了什么问题?

4

1 回答 1

4

getLine功能正常工作,但打印循环是垃圾输出的原因。

你打印输出

while((c=line_1[i++]) != EOF){
    putchar(c);
}

butEOF不是字符,当然也不是字符串终止符。

您应该将循环更改为

while((c=line_1[i++]) != '\0'){
    putchar(c);
}

或者

printf("%s", line_1);

或者

fputs(line_1, stdout);
于 2012-11-12T08:06:20.707 回答