C语言使用struct和fscanf 获取文件内容 然后进行查找file里面的一个匹配行
C语言使用struct和fscanf获取文件内容然后进行查找file里面的一个匹配行,比如文件test.txt如下385,Magic,38,1495,LiquidSoap...
C语言使用struct和fscanf 获取文件内容 然后进行查找file里面的一个匹配行,比如文件test.txt如下
385,Magic,38,1
495,Liquid Soap.35,1
316,Chocolate Cookies,34,0
如果用户输入385则输出匹配第一行,如果输入495则输入显示第二行
求高手解答 展开
385,Magic,38,1
495,Liquid Soap.35,1
316,Chocolate Cookies,34,0
如果用户输入385则输出匹配第一行,如果输入495则输入显示第二行
求高手解答 展开
1个回答
展开全部
因为你的分隔符号是逗号,所以用fscanf()函数不太好,用fgets()函数,更适合你这个题目
#include <stdio.h>
#include <string.h>
int main()
{
FILE *fp;
char str[1024]; //尽可能大的串,足够读一行数据
char findstr[100];
printf("input string : " );
scanf("%s", findstr);
strcat(findstr,","); //加上一个逗号分隔符,防止误查,如385和3855要区分开
fp=fopen("test.txt","r");
if ( fp==NULL ) return -1;
while( fgets(str,sizeof(str),fp) )
{
if ( strncmp( str, findstr,strlen(findstr) )==0 )
{
printf("%s", str );
break;
}
}
fclose(fp);
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
FILE *fp;
char str[1024]; //尽可能大的串,足够读一行数据
char findstr[100];
printf("input string : " );
scanf("%s", findstr);
strcat(findstr,","); //加上一个逗号分隔符,防止误查,如385和3855要区分开
fp=fopen("test.txt","r");
if ( fp==NULL ) return -1;
while( fgets(str,sizeof(str),fp) )
{
if ( strncmp( str, findstr,strlen(findstr) )==0 )
{
printf("%s", str );
break;
}
}
fclose(fp);
return 0;
}
更多追问追答
追问
我使用struct的目的主要是方便对其中的值进行排序和计算,比如说如果第一行第三列为38,我能够计算得出价格打八折类似的功能。请问如何操作,谢谢!
我使用struct的目的主要是方便对其中的值进行排序和计算,比如说如果第一行第三列为38,我能够计算得出价格打八折类似的功能。请问如何操作,谢谢!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询