将文件作为参数传递到我的程序中,然后传递给函数?

时间:2015-11-27 16:08:49

标签: c function file pointers

我正在使用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);
}

但是,如果我设置文件的名称" file.txt"使用"设置程序的参数选项在CodeBlock中作为参数,然后想要将它传递给一个可以从中读取的函数:

void read(char *name){

File *input;

....
....

}

并称之为:

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


read(&argv[1]);

}

它不起作用,程序崩溃了。

2 个答案:

答案 0 :(得分:3)

如果你的函数prototyope是

void read(char *name)

然后你需要像

一样调用它
read(argv[1]);

因为,argv[1]本身会为您提供char *,而非&argv[1]

FWIW,在直接使用之前,请务必检查argv[n]的有效性。

答案 1 :(得分:0)

测试

read(&argv[0]);

并查看控制台中的argv中的内容

printf(&argv[0]);