c - 如何在 C 中读取通过 stdin 传递的文件

标签 c stdin

我想像这样将文本文件传递给 C 程序 ./program < text.txt .我发现在 SO 上传递的参数不会出现在 argv[] 中而是在 stdin .如何在标准输入中打开文件并读取它?

最佳答案

无需打开文件即可直接读取数据。 stdin 已经打开。如果不进行特殊检查,您的程序将不知道它是文件还是来自终端或管道的输入。

您可以使用 read 通过其文件描述符 0 访问 stdin 或使用 stdio.h 中的函数。如果函数需要 FILE *,您可以使用全局 stdin

示例:

#include <stdio.h>
#define BUFFERSIZE (100) /* choose whatever size is necessary */

/* This code snippet should be in a function */

char buffer[BUFFERSIZE];

if( fgets(buffer, sizeof(buffer), stdin) != NULL )
{
    /* check and process data */
}
else
{
    /* handle EOF or error */
}

您还可以使用scanf 来读取和转换输入数据。此函数始终从 stdin 读取(与 fscanf 相比)。

关于c - 如何在 C 中读取通过 stdin 传递的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55143159/

相关文章:

C 中的常量数组类型,标准中的缺陷?

c - 将指向数组的指针传递给另一个函数 C

bash - "<<(command-here)"shell 习语导致 "redirection unexpected"

c++ - 从 ifstream 读取 stdin/cin 是否安全?

Python 子脚本消耗所有标准输入

c++ - 从 c/c++ 或 linux 发布到 facebook 墙上

c - 将数据从文件加载到结构中

Python:获取按键事件并输出其他内容

c - Scanf/Printf双变量C

c - C 中的无符号整数打印不正确