gpt4 book ai didi

C 程序将文件名作为命令行参数并记录每个字符的计数?

转载 作者:行者123 更新时间:2023-11-30 15:38:11 24 4
gpt4 key购买 nike

我正在创建一个程序,它将文件名(输入或输出)作为命令行参数,从输入文件中读取,计算每个字符并将每个计数的列表打印到输出文件。如果没有给出输入文件,程序应该采用标准输入,如果没有给出输出,程序应该打印到标准输出。

我遇到的两个主要问题是:

1.如果我列出多个输入文件作为命令行参数,则只有最后一个文件将被读取为输入。

2. 如果我将输出文件指定为 "-oresults.txt" (argv[j]+2),则正确的输出将打印到文件中,但如果它给出为“-o results.txt”(argv[j+1])

下面是一段代码:

int main(int argc, char *argv[]) {
FILE *in=stdin; FILE *out=stdout; FILE *hold;
int i, j, c, counts[NUM]={0}, total=0;


for (j=1;j<argc;j++) {
if (argv[j][0]=='-') {
if (argv[j][1]=='o') {
if (argv[j][2]=='\0')
out=fopen(argv[j+1],"w");
if (argv[j][2]!='\0')
out=fopen((argv[j]+2),"w"); }
}
else {
in=fopen(argv[j],"r");
}


while ((c = fgetc(in)) != EOF) {
counts[c]++;
total++;
}

最佳答案

典型的方法是使用getopt(),而不是自己解析命令行。查看the optarg man page 。它提供了一个有效的示例。

更明确地说,您首先需要使用 getopt() 循环并完全解析您的命令行,然后执行计数循环。

关于C 程序将文件名作为命令行参数并记录每个字符的计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21895089/

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