在我的C程序中,此函数将处理打开特定文件然后返回文件指针的所有工作,因此主函数或其他函数可以使用fp读取内容,但到目前为止我还没有能够让它发挥作用。
我只是在学习这门语言,所以我有可能做错了。
int open_text_file(char text_file_name[])
{
FILE *fp;
if((fp = fopen(text_file_name, "r")) != 0)
{
return fp;
}
else
{
printf("Cannot open file \"%s\"\n", text_file_name);
}
}
答案 0 :(得分:11)
在第一行,你有
int open_text_file(char text_file_name[])
这将返回类型声明为int
你应该拥有的是
FILE * open_text_file(char text_file_name[])
同样,在你的“其他”情况下,你应该返回一些东西来表明 给来电者一个错误。
return NULL
是一个合适的选择。但是,请确保在调用时检查返回值。
答案 1 :(得分:6)
该函数有点无意义,因为它只是fopen()所做的,加上错误消息。这不是好设计,因为错误分支还必须返回一个(可能是NULL)指针,然后必须在调用代码中再次测试它。更好的只是说:
FILE * fp = fopen( somefile, "r" );
if ( fp == NULL ) {
fprintf( stderr, "Cannot open %s\n", somefile );
exit(1); // or whatever you need to do to handle the error
}
答案 2 :(得分:0)
FILE* open_text_file();
需要成为原型。
int
不是FILE*
。