gpt4 book ai didi

C 中的命令行参数和读取文件/打印文本

转载 作者:太空宇宙 更新时间:2023-11-04 04:38:48 24 4
gpt4 key购买 nike

我正在尝试使用命令行参数并在 C 中解析文本文件。基本上我希望能够输入两个数字,例如 1 和 4,然后让它读取文本文件的一列然后打印出来到标准输出。我希望能够做这样的事情:

PID   TTY        TIME     CMD
449 ttys000 0:00.35 -bash
1129 ttys001 0:00.35 -bash
25605 ttys001 0:00.15 vi prog.c
6132 ttys002 0:00.11 -bash
6208 ttys002 0:00.03 vi test

然后做:

./your_prog 1 4 < data.txt 

PID CMD
449 bash
1129 -bash
25605 vi
6132 -bash
6208 vi

所以我需要输入我想要打印的列,重定向“data.txt”中的文件并让它处理文件并像这样打印。

到目前为止,我的代码是这样的:

 #include <stdio.h>
int main(int argc, char **argv){
//int row = argc[0];
//int col = argc[1];
//if number entered is less than one, re-enter

int i;
for (i = 0; i < argc; i++) {
printf("argv[%d] = %s\n", i, argv[i]);
}
if(argc < 1){
fprintf(stderr, "Enter a valid input");

//quit
return 1;
}
else{
char ch[256];
//ch[255] = '\0';

while(fgets(ch, 256, stdin) != NULL){
printf("%s", ch);
}
}
return 1;
}

但我不确定我是否在正确的轨道上,并且对下一步该做什么感到困惑。我是 C 的新手,如果这是一个简单的问题,我深表歉意。

最佳答案

为了帮助您入门,这改进了您收集命令行信息的方式。注意第一个参数 argv[0] 是可执行文件本身的名称。请记住上面的评论,我没有进一步改进。语法是 progname filename col1 col2

#include <stdio.h>
#include <stdlib.h>

void fatal(char *msg) {
printf("%s\n", msg);
exit (1);
}

int main(int argc, char*argv[])
{
int col1, col2;
FILE *fp;
char ch[256];

if(argc < 4)
fatal("Need three arguments");

if (sscanf(argv[2], "%d", &col1) != 1)
fatal("Argument 1 error");

if (sscanf(argv[3], "%d", &col2) != 1)
fatal("Argument 2 error");

printf("Read columns %d and %d from file %s\n", col1, col2, argv[1]);
if ((fp = fopen(argv[1], "r")) == NULL)
fatal("Unable to open file");

// process the file
while (fgets(ch, 256, fp) != NULL) {
printf("%s", ch);
}
fclose(fp);
return 0;
}

关于C 中的命令行参数和读取文件/打印文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28505929/

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