Kali Linux中C语言的命令行参数问题?

2vuwiymt  于 2022-12-17  发布在  Linux
关注(0)|答案(1)|浏览(208)

我试图开发一个程序,将显示一个文件的内容,并使用命令行参数将file1.txt的内容复制到file2.txt。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]){`

    char show[6] = "--show";
    char copy[6] = "--copy";
    char help[2] ="-h";

    if(argc == 3){
        // chandu --show filename
        if(strcmp(argv[1],show)){ // strcmp => compares two strings.
            FILE *sfile;
            char ch;
            sfile=fopen(argv[2],"r");
            while((ch = fgetc(sfile)) != EOF){
                if(ferror(sfile)){
                    perror("I/W");
                    break;
                }
                else{
                    printf("%c",ch);
                }
            }
            fclose(sfile);
            exit(0);
        }else{
            puts("use -h for help.\n");
        }
    }

问题是:显示内容必须使用./chandu --show meow.txt,但它可以使用./chandu show meow.txt。意味着使用双连字符(--)它不能工作,没有连字符,它可以工作。为什么?我想不通。请帮助。
我将strcmp()更改为strncmp(),以便它可以运行(命中试验方法),但它没有运行。

6jygbczu

6jygbczu1#

strcmp返回0表示两个字符串相等,0表示if的条件不会执行。您可以显式地将结果与0进行比较:

if(strcmp(argv[1], show) == 0) {
  // Here ---------------^

相关问题