从C中的argv [i]检查fopen时出错

Zac*_*dle 1 c error-handling null if-statement file

我一直在尝试使用我的代码进行错误检查,以确保给出的参数是一个有效的文件.以下代码:

int main(int argc, char *argv[]){
    for(int i = 1, i <=argc, i++){
         FILE *fileIn = fopen(argv[i],"r");
         if(fileIn == NULL){
                fprintf(stderr,"The file %s doesn't exist.",fileIn);
         }
         else if (fileIn != NULL){
             do a bunch of stuff, including printing out values from a struct
         }
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是当我运行我的程序时,我将其作为输出:

The (null) file doesn't exist
Output from else if loop
Run Code Online (Sandbox Code Playgroud)

所以基本上,它是说fileIn为null并且不是同时为null.它正常读取文件并按原样执行,但每次都会运行错误.有没有办法分配指向argv [i或什么?这是怎么回事?

Mar*_*ins 5

代码循环太多次了.在<= argc正在评估比实际存在的另一个理由.它应该是:

for(int i = 1, i < argc, i++){
Run Code Online (Sandbox Code Playgroud)

此外,不存在的文件的printf应如下(它需要名称):

fprintf(stderr,"The file %s doesn't exist.",argv[i]);
Run Code Online (Sandbox Code Playgroud)