C 从stdin读取命令行参数

C 从stdin读取命令行参数,c,pipe,stdin,argv,C,Pipe,Stdin,Argv,所以我想让自己运行./program,这样就可以输入一个文本文件 例如:./程序

所以我想让自己运行./program,这样就可以输入一个文本文件

例如:./程序 我知道我无法使用argv获取数据,但我一直在尝试用谷歌搜索如何从stdin获取数据,而我似乎找不到合适的谷歌关键词来获得一些基本的理解。我确信它是使用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;
}
#包括
#包括
内部主(空)
{
int bufferSize=100;
char*buffer=malloc(bufferSize);
整数长度=0;
INTC;
而((c=getchar())!=EOF)
{
if(长度==缓冲区大小)
{
缓冲区大小*=2;
buffer=realloc(buffer,bufferSize);
}
缓冲区[长度+++]=c;
}
对于(int j=0;j

希望这能让你开始。

你有更具体的问题吗?你到底遇到了什么问题?我正试图获取一个文本文件,并使用重定向操作符将其中的所有内容放入一个字符数组,如示例所示,如果我没有说清楚,很抱歉。有一个问题是有意义的,即“buffer[I++]=c;”会完全跳过数组的第一个索引吗?不会,
i++
使用后增量运算符,这意味着它在增量操作发生之前返回
i
的值。哦,是的,我完全忘记了它的“后增量”部分,感谢您的澄清。