2015-11-11 58 views
-1
#include <stdio.h> 

#include <string.h> 

int main() 
{ 
    FILE *fp1; 
    fp1 = fopen("math.dat", "r"); 
    char ch; 
    int i=0; 

while (1) { 
     ch = fgetc(fp1);      
     if (ch == '3') 
      i++; 
     if (ch == EOF) 
      break; 
} 

    printf("there is : %d matches\n", i); 

    return(0); 
} 

此代碼僅用於在名爲math.dat的txt文件中搜索數字「3」。我想搜索多個角色。誰能幫忙?如何在文件中搜索txt而不是字符

+1

使用'fgets'來讀取字符串,然後搜索。 – ameyCU

+0

另請參見:'char ch;' - >'int ch;' – chux

回答

0

使用strchr()搜索每個輸入字符的字符串:

const char *search_group = "34ab"; 
... 
if (strchr(search_group, ch)) 

strchr()返回NULL如果字符沒有找到,或指向 的第一場比賽。

編輯建議的chux的評論:如果你不想'\0'要考慮 搜索組的一部分,使用memchr來代替。

+0

注意:代碼將在第一次'ch =='\ 0''時停止。 – chux

+0

1)D'oh!謝謝。 2)它會?爲什麼? –

+0

因爲''34ab''中有5個'char','ch == 0'匹配其中的一個。 「strchr函數查找s指向的字符串中第一次出現的c(轉換爲char),終止的空字符被認爲是字符串的一部分。」 – chux