从stdin读取命令行参数

时间:2013-09-19 23:14:55

标签: c pipe stdin argv

所以我想允许自己运行./program,以便它允许输入管道文本文件。

EX:./ program< sometext.txt

我知道我无法使用argv获取数据,但我一直试图谷歌如何从stdin获取它,我似乎无法找到合适的关键词谷歌获得一些基本的理解这该怎么做。我确信它已经完成了使用scanf,但我仍然很难理解它。

任何形式的见解都会有所帮助,我不需要确切的代码,但如果它足够简单,那将非常有用。谢谢!

1 个答案:

答案 0 :(得分:2)

这是一个简单的示例(没有错误检查),将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;
}

希望这会让你开始。