2017-03-11 105 views
0

我正在做一个任务,我必须在执行程序时从命令行打开一个文件。使用命令行打开文件

例子:

program.exe file.txt 

但是不工作的一切对我来说。有人可以告诉我我做错了什么吗?这是我第一次将文件作为参数。

int main(int argc, char **argv) { 
    int value; 
    value = fileRead(argv[1]); 
} 

int fileRead(char argv[]) { 
    int value; 

    FILE *fp; 
    fp = fopen(argv[1], "r"); 

    if (fp) { 
    fscanf(fp, "%d", &value); 
    } else { 
    fprintf(stderr, "Failed to open file!\n"); 
    } 
    return value; 
} 
+1

'argv [1]'不应该在引号中。 –

+0

@JosephSible我删除了引号,现在我收到很多警告。 “通过'fopen'的参数1使得整数指针没有强制转换” – Cows42

+0

你可以发布你的整个程序的代码吗? –

回答

1

你在混合一个字符和一个字符串。您通过argv[1]fileRead作为argv。然后在fileRead,你再次做argv[1]。这有效地做了argv[1][1],它只是给出了字符串的第二个字符。您需要从main中删除[1],然后更改参数类型,或从fileRead删除[1]

+0

谢谢!这解决了我的问题,我现在明白了。很有帮助 :) – Cows42

相关问题