我试图打开多个文件顺序,使用fopen(),只是打印内容和计算字符。 在main()中,我使用不同的文件名称调用两次函数,但函数仅打印第一个文件两次的内容。当然,这两个文件都存在,只要调用此函数打印正确的内容;测试两个文件。在多次调用该函数时似乎存在问题。函数使用fopen()保持打开相同的文件,即使给定不同的文件名作为参数
有人可以给我一个提示吗?什么可能是错的?
我的功能:
void open_and_read(char file_name[80]){
char c;
int buf_length = 16384;
char buf[buf_length];
char* buf_pointer;
int i = 0;
FILE *file_pointer;
file_pointer = fopen(file_name,"r");
buf_pointer = buf;
if(file_pointer==NULL){
printf("Error: File %s not opened!", file_name);
}
else {
while(c!=EOF && i<(buf_length-1)){
c = fgetc(file_pointer);
*buf_pointer = c;
buf_pointer++;
i++;
}
buf_pointer--;
*buf_pointer = 0;
printf("The file %s contains the follwing: \n%s", file_name, buf);
printf("char-count: %i\n", i);
}
if(fclose(file_pointer)!=0){
printf("File was not closed!");
}
else {
printf("File was successfully closed!");
}
}
的main():
int main(){
open_and_read("/home/x201/dev/IB/data/line1.dat");
open_and_read("/home/x201/dev/IB/data/line2.dat");
确定的第二个文件是不是空的? – fjardon 2013-05-02 11:20:44
初始化char c,并将chage类型char转换为int。 – BLUEPIXY 2013-05-02 11:23:08
您是否确认'file_name'在第二个fopen之前是预期的?你是否确认过来自'fopen'的返回码在两个调用中都不为零? – wmorrison365 2013-05-02 11:23:36