2012-10-26 226 views
0

我試圖製作一個程序,它接受用戶輸入並在.csv文件中搜索所有匹配結果。我想要做的是輸出.csv文件中與用戶搜索匹配的所有字符串。現在它會提示用戶輸入一個搜索,但輸出始終是相同的,無論輸入什麼字符串。用戶輸入.txt文件搜索C

這是到目前爲止我的代碼

#include <stdio.h> 
#include <string.h> 


int main() 
{ 
    FILE *fp=fopen("file.csv","r+"); 
    char buf[1000]; 
    char str[25]; 

    printf("Enter your search:"); 
    scanf ("%s", str); 

    while(fgets(buf, sizeof(buf),fp)!= NULL) 
    { 
     if (strstr(buf, "str")){ 
      printf("%s\n", buf); 
     }  
    } 

    fclose(fp); 
} 

回答

1

那麼現在你只是尋找"Salmon",而不是用戶的輸入。

在任何情況下,您指定無效標誌的文件打開方式...

如果你想讀取和寫入文件時,用"r+""w+""a+"

如果您只是想閱讀,請使用模式"r"

+0

感謝您的回覆,如果我只想搜索用戶在.csv文件中輸入的字符串,我不需要寫標記嗎?如果我使用r +標誌,我會得到相同的錯誤.. – gsm4110

+0

這是正確的 - 你只是想讀取文件。你不會修改它。可能無法使用寫入權限打開,因爲您已在編輯器中打開它。 – paddy

+0

你的意思是我在試圖閱讀時打開.csv文件?但我不 – gsm4110

0

在.csv文件的情況下。如果你可以在「r +」模式下打開它,那將是非常好的。 你的情況應該是這樣的。

FILE *fp=fopen("file.csv","r+"); 

兩個R +和W +我們可以讀到,在文件中寫,但R +不截斷(刪除)文件的內容以及它不創建一個新的文件,如果這樣的文件不退出,而在W +截斷文件的內容,以及創建一個新的文件,如果這樣的文件不存在

1

在你最新的修改,代碼需要被移除

if (strstr(buf, "str")){ 

圍繞str變量雙引號應該是

if (strstr(buf, str)){ 
+0

是的,我的不好,但它仍然不會返回匹配str的結果。 – gsm4110