2013-02-15 265 views
2

我正在嘗試讀取文本文件並將內容顯示在屏幕上。該文件只是一個單詞列表。我已將.txt文件放入項目的樹中,但代碼無法打開它。我的問題是,.txt文件在錯誤的地方?打開正確的功能來做到這一點?我正在圍繞着這個圈子,看起來很簡單! :(在VS2010中讀取.txt文件

該文件存儲在目錄下的 「項目名」 - 源文件 - FILE.TXT

到目前爲止我的代碼是:

int main (void) 
{ 

char word [30]; 

    FILE *fp; 

    if ((fp = fopen("sort.txt", "r")) == NULL) 
    { 
     printf("File could not be opened\n"); 
    } 
    else 
    { 
     fscanf(fp, "%s", word); 

     while (!feof(fp)) 
     { 
      fscanf(fp, "%s", word); 
     } 

     fclose (fp); 
    } 
    return 0; 
} 

問題解決了我。在我的項目中重新創建一個文本文件,方法是右鍵單擊Source Files,然後選擇Add New Item並選擇Utility選項下的文本文件,然後將我的原始文本文件數據複製到該文件中,然後在相應的目錄中創建該文件。簡單的解決方案!快樂的新手編碼器!

回答

0

由於您正在打開相對路徑,因此您需要將File.txt放在與.exe相同的文件夾中。當然,我假設你寫了File.txt時,你的意思是sort.txt,因爲這就是你的代碼引用的內容。

使用託管語言,您可以對任何文件使用「始終複製」,但對於任何文件,使用C++則不能。因此,一個特定的文件複製到輸出目錄,你需要添加一個生成後事件:

  • 右鍵單擊C++項目,然後選擇屬性
  • 展開「配置屬性」
  • 展開「建設活動」
  • 點擊「生成後事件」
  • 粘貼copy "$(ProjectDir)sort.txt" "$(OutputPath)"進入「命令行」框
  • 點擊「OK」

現在,當您構建時,應將sort.txt複製到與您的可執行文件相同的位置。請注意,即使它看起來像sort.txt是在'源文件'文件夾中,它確實不(至少在默認情況下)。

+0

謝謝Andorbal,是的,我的意思是sort.txt!你和約翰T都提出了同樣的解決方案,這是個好消息。壞消息是我無法想象如何去做!當我右鍵單擊文件並選擇屬性時,我沒有任何複製選項。我看到的只是一個配置wondow。對不起,我是個笨蛋,但我是個新手! – FE21 2013-02-15 18:38:15

+0

你是否正確點擊Visual Studio?你看到什麼配置? – Andorbal 2013-02-15 18:42:53

+0

是通過VS.它顯示了一般的配置屬性,並說該文件不會被排除在構建之外,並且該項目類型不參與構建... – FE21 2013-02-15 18:46:56

0

您的代碼將被編譯到解決方案中的bin文件夾中。打開的文件正在bin文件夾內與.exe相同的位置查找文件。如果您單擊解決方案文件夾中的文件,右鍵單擊並選擇屬性,然後將選項「複製到輸出目錄」設置爲「始終複製」,VS會將該文件複製到與exe相同的位置。