如何仅用C语言从每行中读取前n个字符?

问题描述 投票:0回答:4

假设我有一个包含以下内容的文件

abcdefghijklmnopqrstuvwxyz1234567890

而且我只想从每一行中读取前5个字符,因此它可能类似于以下内容:

abcdemnopqyz123

我尝试了以下解决方案,

char line[5];
    for (int i = 0; i < 5; i++){
        char c = getchar();
        line[i] = c;
        printf("%c", line[i]);
    }

但是它不起作用。我该如何解决?

c stdin
4个回答
2
投票
这里是一个演示程序。为了简单起见,使用标准输入流stdin代替了外部文件。

#include <stdio.h> #include <string.h> int main(void) { char line[6]; while ( fgets( line, sizeof( line ), stdin ) != NULL ) { if ( !strchr( line, '\n' ) ) fscanf( stdin, "%*[^\n]\n" ); else line[strcspn( line, "\n" )] = '\0'; puts( line ); } return 0; }

如果输入

abcdefghijkl xyz mnopqrstuvwx yz1234567890

然后输出将是>

abcde xyz mnopq yz123


1
投票
您发布的代码将从stdin中读取5个字节并进行打印。此代码应该有效。

0
投票

-1
投票
我想您希望我们为您做到这一点,所以在这里是:
© www.soinside.com 2019 - 2024. All rights reserved.