2012-12-27 4 views
0

로 구분 한 후의 내가 TXT 파일이 있다고 가정하자 정보를 표시 :C에서 여러 단어 검색, 그들을 쉼표

날짜 : 11/11/11

장치 : 박스터

상태 : 좋은

단어 (내게 말하기 :)에 대한 내 코드 검색을 만들고 그 단어 (Boxster) 뒤에 정보를 표시하려고합니다. 지금까지 나는 단지 한 단어를 검색하는 코드를 가지고있다. 2 ~ 3 단어를 검색하고 그 뒤에 정보를 표시 할 수 있도록 코드를 수정하려면 어떻게해야합니까?

그것은 것 일에도 더 도움이 i는 다음과 같은 형식의 정보를 표시 할 수있는 경우 : 좋은

박스터, 11/11/11를.

여기 내 코드입니다, 미리 감사드립니다! 일부 변경이는 printf와 당신은 문자열에 대해 여러 검사를하거나 || 논리를 사용할 수는 fgets

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 
int main() { 

    char file[100]; 
    char c[100]; 

    printf ("Enter file name and directory:"); 
    scanf ("%s",file); 

    FILE * fs = fopen (file, "r") ; 
    if (fs == NULL) 
    { 
     puts ("Cannot open source file") ; 
     exit(1) ; 
    } 

    FILE * ft = fopen ("book5.txt", "w") ; 
    if (ft == NULL) 
    { 
     puts ("Cannot open target file") ; 
     exit(1) ; 
    } 

    while(!feof(fs)) { 
     char *Data; 
     char *Device; 
     char const * rc = fgets(c, 99, fs); 

     if(rc==NULL) { break; } 

     if((Data = strstr(rc, "Date:"))!= NULL) 
      printf(Data+7); 

     if((Data = strstr(rc, "Device:"))!=NULL) 
      printf(Device+6); 
    } 

    fclose (fs) ; 
    fclose (ft) ; 

    return 0; 

} 
+3

이것은 C++가 아닙니다. – 0x499602D2

+0

1) feof()가 잘못되었습니다 2)'printf (Data + 5);는'printf (Data + 7);이어야합니다 3) "dateL :"은 무엇입니까? 4) strtok 또는 strspn + strcspn이 트릭을 수행 할 수 있습니다. – wildplasser

답변

0

참고.

시도 :

char rc[120]={0x0}; 
while(fgets(rc, sizeof(rc), fs)!=NULL) { 
     char *Data; 
     char *Device; 

     if((Data = strstr(rc, "Date:"))!= NULL) 
      printf("%s\n", &Data[7]); 

     if((Device = strstr(rc, "Device:"))!=NULL || 
      (Device = strstr(rc, "String:"))!=NULL || 
      (Device = strstr(rc, "foo:"))!=NULL) 
      printf("%s\n", &Device[6]); 
    } 

당신은 당신이 당신의 시스템이 여기에 C에서

0

@DaveWang

는 것을 지원하는 경우, 검색을위한 정규 표현식을 구현 할 수 있습니다 검색하는 방법에 대한 자세한 내용을 보려면으로 내 생각에 그건 당신의 요구 사항에 잘 맞을 것입니다 : https://www.dropbox.com/sh/108lz7k6z50kq7v/kmj6NYsuMT

도움이 되었으면 알려주세요