KJ0*_*090 6 c pointers function
在我的C程序中,这个函数将处理打开特定文件然后返回文件指针的所有工作,因此main或其他函数可以使用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);
}
}
Run Code Online (Sandbox Code Playgroud)
McP*_*inM 11
在第一行,你有
int open_text_file(char text_file_name[])
Run Code Online (Sandbox Code Playgroud)
这将返回类型声明为int
您应该拥有的内容
FILE * open_text_file(char text_file_name[])
Run Code Online (Sandbox Code Playgroud)
同样,在你的"else"情况下,你应该返回一些东西来向调用者指出错误.
return NULL
Run Code Online (Sandbox Code Playgroud)
是一个合适的选择.但是,请确保在调用时检查返回值.
小智 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
}
Run Code Online (Sandbox Code Playgroud)