这应该被编译成一个静态库来做作业。当我使用命令:“gcc -c innoprompt.c inprompt.c”时,我收到警告,它指向“fin = openFilePrompt();”行 来自 innoprompt.c。我看不出这将如何导致此警告。此外,当我使用链接的库编译实际程序时,我会收到相同的警告。由于分配的性质,我不允许更改从库中调用函数的文件。
这是我的文件头。
#pragma once
#ifndef LIBINFILEUTIL_H
#define LIBINFILEUTIL_H
#include <stdio.h>
FILE* openInputFile(char* fileName);
FILE* openInputFile();
#endif
这是我的 inprompt.c #include "libinfileutil.h"
FILE* openFilePrompt(){
char fileName[100];
FILE* fin = NULL;
do{
printf("\nPlease enter file to be opened: ");
fscanf(stdin,"%s",fileName);
while(fgetc(stdin) !='\n');
fin = fopen(fileName, "r");
if(fin==NULL)
printf("Failed to open file. Please try another file name.\n");
}while(fin==NULL);
return fin;
}
最后,这是我的 innoprompt.c
#include "libinfileutil.h"
FILE* openInputFile(char* fileName){
FILE* fin = NULL;
fin = fopen(fileName, "r");
if(fin==NULL)
fin = openFilePrompt();
return fin;
}