我試圖打開多個文件順序,使用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