你好我有一個項目,我正在做的,我需要我的程序從命令行運行,並能夠讀取將在程序中使用的標誌和文件名。讀取標誌和文件名C中的命令行參數
這是我現在的代碼。它編譯時不輸入任何標誌。我不認爲我的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);
}
僅供參考:家庭作業標籤已棄用。 – nneonneo
我不明白。 –
你說得對,所有'GetArgs'都會打印參數。如果你在POSIX機器上(比如Linux或Mac OSX),我建議你看看['getopt'](http://pubs.opengroup.org/onlinepubs/009695399/functions/getopt.html)。如果你搜索的話,還有許多解析庫可用的參數,上面提到的'getopt'函數也適用於Windows。 –