如何实现(c语言)在文件中按条件查找自己想要的信息并输出..

作者&投稿:濮炭 (若有异议请与网页底部的电邮联系)
C语言实现对一文件中的一段特定内容进行查询,并输出所在位置~

#include
#include
#include

int find(FILE* p_file, char* pStr)
{
int iPos = ftell(p_file);
char chBuff = 'a';
int iReadNum = 0;
for(pStr++;
iReadNum = fread(&chBuff, 1, 1, p_file), iReadNum && *pStr;
++pStr)
{
if (*pStr != chBuff)
{
fseek(p_file, iPos, SEEK_SET);
return 0;
}
}
if(!(*pStr))
{
return iPos;
}
if(iReadNum == 0)
{
fseek(p_file, iPos, SEEK_SET);
return 0;
}
}

void fun(char* pString)
{
FILE* p_file = fopen("test.txt", "a+b");
// 文件内容为121212123454574569
if(!p_file)
{
printf("打开文件失败
");
return ;
}
char buf = 'a';
char char_arr[10];
strcpy(char_arr, pString);
int iPos = 0;
while( fread(&buf, 1, 1, p_file))
{
if(buf == char_arr[0])
{

if( iPos = find(p_file, char_arr))
{
printf("找到%s的位置为: %d
", pString, iPos);
fclose(p_file);
return ;
}
}
}
printf("没有找到%s
", pString);
fclose(p_file);
}

int main()
{
fun("123");
fun("bcd");
fun("23");
fun("456");
return 0;
}

对于查找字符串的长度假设不会超过10.。这里不考虑越界问题。只看实现方法

首先看了你的题目以为是结构体变量输出,但细看有像是枚举类型。下面写个例子看是否符合你的需要:
#include/* 定义枚举类型 */enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };void main(){ /* 使用基本数据类型声明变量,然后对变量赋值 */ int x, y, z; x = 10; y = 20; z = 30; /* 使用枚举类型声明变量,再对枚举型变量赋值 */ enum DAY yesterday, today, tomorrow; yesterday = MON; today = TUE; tomorrow = WED; printf("%d %d %d
", yesterday, today, tomorrow);}如果是结构体,
#include void main(){struct test{ int MON; int TUE; int WED; int THU; int FRI; int SAT; int SUN;}struct test test1;test1.MON=1;test1.TUE=2;printf("MON=%d",test1.MON);printf("TUE=%d",test1.TUE);}

大概思路就是调用fopen函数打开文件。读取文件信息存在char[]数组里,然后调用char *strstr(char *str1, char *str2),功能是找出str2字符串在str1字符串中第一次出现的位置。 可以这样写:char *p=strstr(a,b);if(NULL != p){ //a中不存在b,添加相应代码}else{ //a中存在b,添加相应代码}返回值p为a中第一次出现b的位置
然后就可以获取该字符串再输出了。这个函数要包含头文件string.h

字符串查找。自己写,或者用系统函数,比如有strstr.只能是先读出每一行,存到字符串,再查找。

打开一个文件,然后一行一行的读,再做判断~

设置好选择条件窗口 然后根据条件逐条查找


在c语言中如何实现1到100相加
方法一:1 i = 1 2 while i < 10:3 k = 1 4 while k <= i:5 print('%d*%d=%2d '% (i,k,i*k),end='') #end=‘’ 表示不换行(系统默认输出完毕换行)6 k += 1 7 print()8 i += 1 输出结果 9 1*1= 1 10 2*1= 2 2*2= 4...

绝对值在c语言中如何实现?
绝对值在c语言中可以用使用abs()函数或fabs()或使用条件运算符、使用条件运算符、使用位运算 ^ 和 >>。1、使用标准库函数 abs() 或 fabs()这是最简单和最常用的方法,只需要引入头文件 <stdlib.h> 或 <math.h>,然后调用 abs() 函数或 fabs() 函数即可。abs() 函数适用于整数,fabs() ...

C语言,如何实现?在输入学分栏下的一个数据之后,按下回车或者空格之后直 ...
DWORD cNumRead = 0;DWORD cNumWritten = 0;while (1) { ReadConsoleInput(hConsoleInput,irInBuf,1, &cNumRead);if (cNumRead && irInBuf[0].EventType == KEY_EVENT && irInBuf[0].Event.KeyEvent.bKeyDown == 0 ) { if (irInBuf[0].Event.KeyEvent.uChar.AsciiChar >='0'...

如何在c语言中实现until语句的功能?
用do while。一、C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。二、尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许...

在c语言中怎么实现输入esc退出 其他键继续
可以参考下面的代码:include<conio.h> include<stdio.h> intmain(){ while(1){ if(_kbhit()&&_getch()==0x1b)break;printf("dosomething...");} } 当前阶段,在编程领域中,C语言的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于其它编程语言具有较大优势。计算机系统设计以及应用...

在C语言中如何实现按任意键继续?
1、直接调用系统函数 system("pause"):system()会调用fork()产生子进程, 由子进程来调用\/bin\/sh-c string 来执行参数string 字符串所代表的命令, 此命令执行完后随即返回原调用的进程。system("pause")可以实现冻结屏幕,便于观察程序的执行结果。如下:2、调用getch()函数:此函数是一个不回显函数...

C语言 请编写程序实现以下功能:在字符串中所有数字字符前加一个$字符...
inti,j;for(i=0;s[i];i++) \/*将串s拷贝至串t*\/ t[i]=s[i];t[i]='\\0';for(i=0,j=0;t[i];i++)\/*对于数字字符先写一个$符号,再写该数字字符*\/ if(t[i]>='0'&&t[i]<='9'){ s[j++]='$';s[j++]=t[i];} \/*对于非数字字符原样写入串s*\/ else s[j++]...

在C语言中字符串的替换如何实现的!
1、首先输入代码:include <string.h> include <stdio.h> \/ 参数:originalString[] :原始字符串 key[] : 待替换的字符串 swap[] : 新字符串 \/ void replace(char originalString[], char key[], char swap[]){ int lengthOfOriginalString, lengthOfKey, lengthOfSwap, i, j , flag;cha...

何为引用操作?在C语言中如何实现?
一个引用可以看作是某个变量的一个"别名"。对引用进行操作就像对原变量进行操作一样。主要用于函数的参数传递时使用。因为C语言没有类似VB的“传引用调用”这个功能,所以C++的引用填补了这个空白。从此即使需要改动参数,也直接传递一个变量过去即可。这在操作符重载中有更重要的意义。int a; \/\/声明...

C语言程序中,要检测一个数据是否在变化着,应该怎么实现?
方法很多种:1)单步调试跟踪变量值。2)如上所说,用一个暂存变量保存它的值,比较。3)在想查看它的值的地方printf();c语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序设计中备受青睐。C语言编译器普遍...

石鼓区13240304920: 在C语言中,如何实现查找某个文件中指定内容? -
百保科德: 字符串查找.自己写,或者用系统函数,比如有strstr.只能是先读出每一行,存到字符串,再查找.

石鼓区13240304920: c语言中如何从文件查询我想要的数据?
百保科德: 这是我的通讯录,希望对你有帮助 #include <stdio.h> #include <stdlib.h> #include <string.h> struct person { int number; char name[20]; char sex[3]; char telephone[20]; char address[50]; struct person *next; }; void output(FILE *fp,struct person *list) ...

石鼓区13240304920: c语言从文件中查找字符串 -
百保科德: c语言从文件中查找字符串的bai方法.如下参考:1.打开python命令窗口,定义并分配字符串变量s1.2.调用字符串中的count方法dudegree来查找字符#在s1中出zhi现的次数.3.除了第一个参数外,count()方法还可以有第二个参数来指示从dao何处开始搜索.4.在count方法中,还可以在开始位置和结束位置之间添加第三个参数,即结束位置.版5.如果要查找的子字符串不在字符串中,则返回的结果为权0.6.最后,在count()方法中添加所有三个参数来查找对应的字符串.

石鼓区13240304920: C语言怎么实现动态条件查询 -
百保科德: 是不能用输入的方法实现的,应该结合实现编译好的语句,用if来整合以实现.

石鼓区13240304920: c语言命令行在一个文件中查找另一个文件指定的内容 -
百保科德: f=fopen("filter.txt","r"); f1=fopen("serieA.txt","r"); while (fgets(line,50,f)!=NULL) { while (fgets(line,50,f1)!=NULL) if(strcmp(nameF,nameS)==0).....rewind(f1); }

石鼓区13240304920: C语言中如何在文件内查找关键字并替换? -
百保科德: 获取关键字,得到它的长度,然后从操作文件中读取这么长的字符串,进行比较,把文件指针指向下一个字符(注意,要一个字符一个字符的向下进行),这样就可以把需要的关键字找出来,如果想替换的话,把读取出的数组改成想要得再写入,最后别忘记fclose();

石鼓区13240304920: c语言 在多个文件中查找一条记录 -
百保科德: 我想到的方法: 1)将 1000 个文件的内容预先读入内存. 2)将 1000 个文件的内容合并为一个文件 3)将 1000 个文件的内容,按关键字建立索引

石鼓区13240304920: 关于C语言的问题 我要做一个按条件查找的程序,我已经编好了写入文件,怎么做到调用输入的数据去查找,给个 -
百保科德: 不知道你要查找的是什么数据类型,希望这个程序对你有帮助.#include <stdio.h>void main(){float a[10][2],f; int i,j,k,n; printf("输入10个学号和相应成绩\n"); for(i=0;i<10;i++) for(j=0;j<2;j++) scanf("%d",&a[i][j]); printf("如查找某分数以上...

石鼓区13240304920: C语言中的结构体数据的条件组合查询是如何实现的 -
百保科德: 结构体数据和其他数据查询没什么其别,条件查询一般有判断查询if,while等,以及选择查询switch.

石鼓区13240304920: 如何用c语言编程实现txt文件中的查找与替换功能?希望能有完整过程 -
百保科德: #include#include//By cockhorseman QQ:1004828288void main(){ FILE *p; char a[200],c,b,i; if((p=fopen("zifu","r"))==0)//打开文件 {printf("文件打开失败!\n");}else{fscanf(p,"%s",a);printf("你要替换的字符\n");c=getchar();getchar(...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网