我想从stdin读取一个文件,并将每行读入一个字符串,只使用getchar

时间:2017-09-13 03:09:32

标签: c

#include <stdio.h>
#include <string.h>

int mygetchar();

int main(){
    mygetchar();
}

int mygetchar(){
    int c, i = 0;
    char line[1000];
    while ((c = getchar()) != EOF && c != '\n'){
        line[i] = c;
        i++;
    }
    line[i] = '\0';
    printf("%s\n", line);
    printf("%lu\n", strlen(line));
    return 0;
}

请看我的代码的图片,我的代码只能出现一个字符串和一行文件,但我希望将文件的每一行存储为字符串并计算其长度,我不能使用fgets ,我只能使用getchar函数,请帮忙,非常感谢。

1 个答案:

答案 0 :(得分:2)

由于您的代码基本上处理字符,直到它到达行尾或文件末尾,您可以简单地在其周围放置另一个循环来执行每一行。

这就像是:

output <- c("MJS", "EAS", "RJS", "TJS") 

或者,您可以逐个处理所有字符,对行尾进行特殊处理(同样,您应该避免缓冲区溢出,并且您应该将公共代码移动到函数中):

int c = '\n'; // force entry into loop
while (c != EOF) {
    int i = 0;
    char line[1000];
    while ((c = getchar()) != EOF && c != '\n') {
        line[i] = c; // should really check for buffer overflow here.
        i++;
    }
    line[i] = '\0'; // and here.
    printf ("%s\n", line);
    printf ("%lu\n", strlen (line));
}