假设我有一个txt文件:
日期:11/11/11
设备:Boxster
状态:好
我正在尝试让我的代码搜索一个单词(Say Device :),然后显示该单词后面的信息(Boxster)。到目前为止,我的代码只能搜索一个单词。我如何修复代码,以便它可以搜索2或3个单词,并在它们之后显示信息?
如果我能按以下格式显示信息会更有帮助:
Boxster,11/11/11,好。
这是我的代码,提前谢谢!
#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;
}
答案 0 :(得分:0)
注意printf和fgets的一些更改您可以使用逻辑或||
对子字符串进行多次检查。
尝试:
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语言。
答案 1 :(得分:0)