使用多个不同的参数与比较两个文件的程序

时间:2015-11-07 01:10:38

标签: c file-io command-line-arguments

我正在制作一个程序,将两个文本文件与控制台参数./a -i test1.txt test2.txt进行比较,其中-i可以是-i-w或{{ 1}}。如果没有-l参数,我试图做的是调用特定函数,如-i中所示,但我无法使其工作。

这是我的代码显示我的主要和我的目标,cs_character:

./a test1.txt test2.txt

其次,如果没有int cs_character(FILE* fp1, FILE* fp2, const char arg1[], const char arg2[]) { int c1; int c2; int count = 0; while((c1 = fgetc(fp1)) != EOF && (c2 = fgetc(fp2)) != EOF) { if (c1 != c2){ printf("%s %d", "files differ: char \n", count); break; } count++; } if(c1 == EOF && c2 != EOF) { printf("%s %s", "EOF on \n", arg1); } if(c2 == EOF && c1 != EOF) { printf("%s %s", "EOF on \n", arg2); } printf("%s", "files are equal\n"); return 0; } int main(int argc, char *argv[]) { size_t i; int j = 2; FILE *fp1; FILE *fp2; fp1 = fopen(argv[2], "r"); fp2 = fopen(argv[3], "r"); for (i = 1; i < (size_t)argc && argv[i][0] == '-'; i++) { if (argv[i][1] == '-') { i++; break; } switch(argv[i][1]) { case 'l': printf("%s", "part l incomplete."); break; case 'w': word(fp1, fp2, argv[2], argv[3]); break; case 'i': character(fp1, fp2, argv[2], argv[3]); break; case 'c': cs_character(fp1, fp2, argv[2], argv[3]); break; case 'u': cs_word(fp1, fp2, argv[2], argv[3]); break; default: character(fp1, fp2, argv[2], argv[3]); break; } } return 1; } argv[2]的特定索引,允许多个参数但仍能检测到文件,最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

如果您在没有选项的情况下调用此选项,for中的main()循环将退出 立即因为argv[i][0] == '-'是假的。它会更好 将标志设置为您想要的默认值,然后检查 用于查看用户是否指定了其他内容的参数。就像是 这样:

char option;
option = DEFAULT_OPTION;
if (argv[1][0] == '-' && argv[1][1] != '-') {
    // change option depending on argv[1][1]
}
// call function depending on option