gpt4 book ai didi

c - EOF 重定向文件或从 stdin 获取输入

转载 作者:行者123 更新时间:2023-11-30 18:43:06 25 4
gpt4 key购买 nike

我设计了一个带有一些状态转换的解析器。现在我想将文件重定向到用 C 创建的解析器中以提供 token 。

我的设计是这样的,我需要在字符串末尾有一个空格(''),也就是说,我需要将一个空格字符附加到从文件或标准输入读取的字符串中。但问题是索引。为了从文件重定向,我需要这样做

int length=0;

while((c1=getchar())!=EOF)
{
a[length]=c1;
length ++;
}
a[length-1]=' ';
a[length]=EOF;

当从标准输入读取时,我需要这样做

int length=0;
while((c1=getchar())!=EOF)
{
a[length]=c1;
length ++;
}
a[length]=' ';
a[length+1]=EOF;

输入可以来自标准输入或文件重定向(例如./a.out < a.c)现在我该如何根据输入类型将这些合并到我的代码中???

最佳答案

首先,都是 cat data | ./a.out./a.out < data产生完全相同的效果,即程序的 stdin读取文件。

也许您想要的是类似 ./a.out data 的语法。为此,我建议像这样的循环:

void process_my_data(FILE *);  // main logic here!

int main(int argc, char * argv[])
{
if (argc == 1)
{
process_my_data(stdin);
}
else
{
while (--argc)
{
FILE * f = fopen(argv[argc], "rb");
process_my_data(f);
fclose(f);
}
}
}

关于c - EOF 重定向文件或从 stdin 获取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12087293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com