我正在使用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]);
}
它不起作用,程序崩溃了。
答案 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]);