所以我想让自己运行 ./program 以便它允许输入管道文本文件。
例如:./program < sometext.txt
我知道我无法使用 argv 获取数据,但我一直在尝试 google 如何从 stdin 获取数据,而且我似乎无法找到正确的关键字来 google 以获得对如何做的一些基本了解这。我确定它是使用 scanf 完成的,但我仍然很难理解它。
任何形式的见解都会有所帮助,我不需要确切的代码,但如果它足够简单,那将非常有帮助。谢谢!
这是一个简单的示例(没有错误检查),它读stdin
入动态分配的字符数组,然后将其打印回stdout
:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int bufferSize = 100;
char *buffer = malloc(bufferSize);
int length = 0;
int c;
while ((c = getchar()) != EOF)
{
if (length == bufferSize)
{
bufferSize *= 2;
buffer = realloc(buffer, bufferSize);
}
buffer[length++] = c;
}
for (int j = 0; j < length; j++)
{
putchar(buffer[j]);
}
free(buffer);
return 0;
}
希望这会让你开始。