2013-12-08 64 views
0

我試圖讓我的代碼讀取一個txt文件,它昨天工作,但現在當我運行它「開始不調試」它打印出我提示的消息它不過是這樣,無論我輸入什麼,它都會重新詢問用戶相同的問題,而不是打印寫入txt文件的內容。我的代碼停止閱讀我的.txt文件

#include <iostream> 
#include <fstream> 
#include <cmath> 
#include <cstdlib> 

void main() 
{ 
    FILE *file_in; 
    char value; 
    file_in = NULL; 
    char unencrypted [1000]; 

    while (file_in == NULL) 
    { 
     printf("Please enter the name of the file you want to open:\n"); 
     scanf("%s", unencrypted); 
     file_in = fopen(unencrypted, "r"); 
    } 

    printf("\n This file consists of the following message: \n"); 
    while(!feof(file_in)) 
    { 
     value = fgetc(file_in); 
     printf("%c", value); 
    } 

    fclose(file_in); 
} 
+1

爲什麼你在使用''和''?在'C++'中使用C風格? – P0W

+1

您應該可以使用errno變量來獲取更多信息。每當fopen返回null時,添加一行以打印errno,並且這應該有助於您進行調試。 – user1612868

+0

閱讀此「while(!feof(file))」總是錯誤的「 - http://stackoverflow.com/questions/5431941/while-feof-file-is-always-wrong – SChepurin

回答

1

如果它反覆要求用戶輸入文件名,那意味着fopen返回NULL。你應該找出原因:

file_in = fopen(unencrypted, "r"); 
if (file_in == NULL) 
    perror(unencrypted); 
0

我不知道你是什麼平臺上,但通常的IDE建立發佈和調試版本,以不同的文件夾。如果您將測試文本文件放在調試文件夾中,然後執行發佈構建,則該文件將無法訪問相對路徑。