[英]Return pointer from function C
在我的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);
}
}
在第一行,你有
int open_text_file(char text_file_name[])
這將返回類型聲明為int
你應該擁有的是什么
FILE * open_text_file(char text_file_name[])
同樣,在你的“else”情況下,你應該返回一些東西來向調用者指出錯誤。
return NULL
是一個合適的選擇。 但是,請確保在調用時檢查返回值。
該函數有點無意義,因為它只是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
}
FILE* open_text_file();
需要成為原型。
int
不是FILE*
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.