gpt4 book ai didi

c - 我想从 stdin 读取文件并将每一行读入字符串并且仅使用 getchar

转载 作者:行者123 更新时间:2023-11-30 18:48:20 25 4
gpt4 key购买 nike

#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函数,请帮忙,非常感谢。

最佳答案

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

那会是这样的:

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));
}

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

int c, i = 0;
char line[1000];
while ((c = getchar()) != EOF) {
// Newline is special, print and reset.

if (c == '\n') {
line[i] = '\0';
printf ("%s\n", line);
printf ("%lu\n", strlen (line));
i = 0;
} else {
line[i] = c;
i++;
}
}
// If data at end without newline.

if (i != 0) {
line[i] = '\0';
printf ("%s\n", line);
printf ("%lu\n", strlen (line));
}

关于c - 我想从 stdin 读取文件并将每一行读入字符串并且仅使用 getchar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46188235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com