我正在使用 CodeBlocks 在 C 中创建我的程序,但我遇到了以下问题。
我正在尝试打开一个 .txt 文件并从中读取,如果我像这样将它放入主函数中,它工作正常:
int main(int argc, char *argv[])
{
FILE *input;
input = fopen("file.txt", "r");
char singleLine[50];
while(!feof(input)){
fgets(singleLine, 50, input);
puts(singleLine);
}
但是,如果我使用“Set Program's Arguments option”将文件“file.txt”的名称设置为 CodeBlock 中的一个参数,然后想将它传递给一个函数,该函数将像这样读取它:
void read(char *name){
File *input;
....
....
}
然后这样调用它:
int main(int argc, char *argv[])
{
read(&argv[1]);
}
它不起作用,程序崩溃。
最佳答案
如果你的函数原型(prototype)是
void read(char *name)
那么你需要这样调用它
read(argv[1]);
因为,argv[1]
本身给你的是 char *
,而不是 &argv[1]
。
FWIW,在直接使用之前始终检查 argv[n]
的有效性。
关于c - 将文件作为参数传递到我的程序中,然后传递到函数中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33961171/