C 在文本文件中查找行的特定信息
似乎在任何地方都找不到有关如何从.txt文件的特定行中查找信息的任何信息。 就像曲棍球比赛的结果一样, 这条线可能看起来像: 19.00 01.01.2010团队1-团队2 5-10 2000 20.00 02.20.2010第2组-第3组7-11 3400 19.00 03.30.2010团队1-团队4-团队4 1000 等等 那么如果我只是想从与第三队和第四队的比赛中得到结果 这就是我现在所拥有的,但是如果我想输入2-2并得到每一行中都有数字2的话 多谢各位C 在文本文件中查找行的特定信息,c,file,import,lines,C,File,Import,Lines,似乎在任何地方都找不到有关如何从.txt文件的特定行中查找信息的任何信息。 就像曲棍球比赛的结果一样, 这条线可能看起来像: 19.00 01.01.2010团队1-团队2 5-10 2000 20.00 02.20.2010第2组-第3组7-11 3400 19.00 03.30.2010团队1-团队4-团队4 1000 等等 那么如果我只是想从与第三队和第四队的比赛中得到结果 这就是我现在所拥有的,但是如果我想输入2-2并得到每一行中都有数字2的话 多谢各位 #include <std
#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;
}
#包括
#包括
内部主(空){
字符目标[64];
printf(“输入分数:”);
scanf(“%s”和“目标”);
静态常量char filNavn[]=“文本”;
文件*fil=fopen(filNavn,“r”);
如果(fil!=NULL){
字符行[64];
while(fgets(line,sizeof line,fil)!=NULL){
if(strstr(行,目标)!=NULL){
printf(“%s\n”,第行);
}
}
fclose(fil);
}
否则{
佩罗尔(费尔纳文);
}
返回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 */
}
我看到一些错误:
代码行7中
应该是:
/* Let's leave it easy, there are somethings you must
read about safety reading. */
gets( target );
&target[0]
代码行12
中,您声明了一个新变量,这样做不好,因此我建议您在声明目标字符串的位置声明它42个字符的插槽中,因此请扫描相同大小的代码行12
char line[ 43 ].
char target[ 43 ].
strstr()
函数,其工作方式如下:我应该用我以前的while替换它还是只是复制它?你必须根据你的需要更改上面的代码。我假设格式为
Team1 vs Team2-2
。如果有空格,也包括它们。嗯,如果我只想找到以2-2结束的比赛,或者有超过3个进球的比赛,那该怎么办?s1
和s2
是两个结果分数。你可以用你想要的方式使用它们。你应该列出你想要显示的所有组合和一些文件内容的示例。好的,我再多写几行谢谢你,阿尔贝托,我正在读的文本文件最后没有.txt,当我写.txt时,它不会读,但如果我不写它,它会读。Atm我有它,所以我现在可以找到每一场比赛都有相同的结果:)但我也想知道如何找到所有进球超过3个的比赛,如果你能帮我的话?