gpt4 book ai didi

在 C 中读取标志和文件名的命令行参数

转载 作者:太空宇宙 更新时间:2023-11-04 01:37:11 25 4
gpt4 key购买 nike

你好,我有一个正在做的项目,我需要我的程序从命令行运行,并能够读取将在程序中使用的标志和文件名。

这是我当前的代码。它在不输入任何标志的情况下进行编译。我不认为我的 GetArgs 有任何作用。我在这部分代码方面得到了帮助。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1024
#define IN 1 /* inside a word */
#define OUT 0 /* outside a word */
/* count lines, words, and characters in input */

int numInputArgs;
int idx;
void GetArgs (int argc, char **argv){

for (idx = 1; idx < 4; idx++) {
if (strcmp(argv[idx], "-c") == 0) {
printf("Flag -c passed\n");
break;
}
else if (strcmp(argv[idx], "-w") == 0) {
printf("Flag -w passed\n");
break;
}
else if (strcmp(argv[idx], "-l") == 0) {
printf("Flag -l passed\n");
break;
}
else if (strcmp(argv[idx], "-L") == 0) {
printf("Flag -L passed\n");
break;
}
else {
printf("Error: unknown flag\n");
exit(-1);
}
}
}// end GetArgs

void lineWordCount ( ) {

int c, nl, nw, nc, state;


state = OUT; nl = nw = nc = 0;
while ((c = getchar()) != EOF) {
++nc;

if (c == '\n')
++nl;

if (c == ' ' || c == '\n' || c == '\t')
state = OUT;

else if (state == OUT) {
state = IN; ++nw;
}
printf("%d %d %d\n", nl, nw, nc);
}
}// end lineWordCount








int main(int argc, char **argv){

GetArgs(argc, argv);
lineWordCount();
printf("Hello");

//fclose( src );
}

最佳答案

您可以使用@Joachim 提到的标准函数,如 getopt()(如果您的系统可用),也可以自己编写代码。如果您有复杂的命令行语法,getopt() 可能更适合 - 如果您只需要检查一组有限的标志,您自己编写代码可能更容易,例如:

void GetArgs (int argc, char **argv){
int idx = 0;

for (idx = 1; idx < argc; idx++) {
if (strcmp(argv[idx], "-a") == 0) {
printf("Flag -a passed\n");
} else if (strcmp(argv[idx], "-b") == 0) {
printf("Flag -b passed\n");
} else if (strcmp(argv[idx], "-c") == 0) {
printf("Flag -c passed\n");
} else {
printf("Error: unknown flag %s\n");
}
}
}

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

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