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

标签 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);
}

但是,如果我使用“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/

相关文章:

file - Xamarin 形式 : How to create folder and a file in device external storage?

java - 如何使文件加密?

c - 有没有让我查看下一个字符的函数?

c - Printf ("%d"的结果,&a)

iOS Swift - 来自其他类的函数不运行

javascript - 如何在 jQuery 方法中使用 'or' 条件?

丙 |套接字未正确关闭

c - 这是 C11 匿名结构吗?

javascript - 为什么我不能为每个数组项调用这个函数?

python在写入文件时在第一行打印一个空行