我想像这样将文本文件传递给 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/