如何忽略argv中的某些参数?

我正在尝试编写一个通过在写模式下打开文件来清空文件的程序。也应该可以使用*等通配符,但是在这种情况下,我希望它忽略文件本身,因此程序不会删除自身。

为了测试这一点,我尝试了:

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

     for (int i = 1; i <= argc; ++i) {
         if(strcmp(argv[i], "empty"))
             printf("File detected\n");

     }
}

然后我跑

./empty empty

我遇到分段错误,并且未打印“检测到文件”。这是为什么?

评论
  • 延>X
    延>X 回复

    You are accessing at argv[argc] which is NULL and passing NULL to strcmp causes the segfault..

    更改

     for (int i = 1; i <= argc; ++i) {
    

     for (int i = 1; i < argc; ++i) {