查找文本文件中行的特定信息

时间:2012-11-22 09:48:20

标签: c file import lines

似乎无法在任何地方找到有关如何从.txt文件中的特定行查找信息的信息。 喜欢这条线可能是曲棍球比赛的结果, 这条线看起来像:

  

19.00 01.01.2010 Team1 - Team2 5 - 10 2000

     

20.00 02.20.2010 Team2 - Team3 7 - 11 3400

     

19.00 03.30.2010 Team1 - Team4 4 - 4 1000

依旧......

所以,如果我只想从team3和team4的比赛中获得结果?

这就是我目前所拥有的,但如果我想输入2 - 2并获得其中包含数字2的每一行。

谢谢

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

int main ( void ){
    char target [ 64 ];
    printf( "Enter a score:" );
    scanf("%s",&target );

    static const char filNavn[] = "text";
    FILE *fil = fopen( filNavn, "r" );
    if ( fil != NULL ){
        char line [ 64 ];

        while( fgets( line, sizeof line, fil ) != NULL ){

            if ( strstr( line, target ) != NULL ){
                printf("%s\n", line);
            }
        }
        fclose( fil );
    }
    else{
         perror( filNavn );
    }
    return 0;
}

2 个答案:

答案 0 :(得分:0)

如果您对文件中的行格式如此确定,则可以使用sscanf。比如说

int score = atoi(target);
while( fgets( line, sizeof line, fil ) != NULL ){
int t1, t2, s1, s2;
sscanf(line, "Team%d vs Team%d %d-%d", &t1, &t2, &s1, &s2);
if (s1 == score || s2 == score)
    /* Do something here */
}

答案 1 :(得分:0)

我看到一些错误:

  1. code-line 7中应该是:

    /* Let's leave it easy, there are somethings you must 
       read about safety reading. */
    gets( target ); 
    
  2. PD:如果你想使用它应该使用的语法,你在目标之前添加了&符号(&amp;),&target[ 0 ];

    1. code-line 12中你声明了一个新变量,这样做并不好,所以我建议你在声明目标字符串的地方声明它。

    2. 在示例中,您说您的数据已保存在42 characters的广告位中,因此请扫描相同尺寸code-line 12

      char line[ 43 ]. 
      
    3. 以同样的方式,你的目标不应该大于行code-line 5

      char target[ 43 ].
      
    4. 关于strstr()功能,它以这种方式工作Cplusplus strstr() behavior description

    5.   

      找到子字符串(strstr())。返回指向str1中第一次出现str2的指针,如果str2不是str1的一部分,则返回空指针。