如何忽略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

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