2012-10-26 228 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