当前位置:首页 » 编程语言 » c语言在文件中查找

c语言在文件中查找

发布时间: 2022-06-02 05:35:49

1. c语言 如何查询文件数据

先用getline或fgets读取数据到一个字符串中,这个串定义的长一点,保证够用就行,如:
char
str[1024];
fgets(
str
,
sizeof(str),
fp
);
//fp为你打开的文件指针
然后调用for循环去读取串的的数据,假设你的分隔符是空格,遍历str,遇到空格就得到一个数据,然后继续遍历,直到str尾。
然后再去fgets数据,再遍历,即可得到所有的数据。

2. C语言文件中字符串的查找与替换

用"rb" open, 用 fread 读, 用 fwrite 写.
记录地点 用 fgetpos.

下面程序例子是按你的原来题意,找目标字串,输出用替代字.直接用文件操作,不开单元存放文件.

输入文件 a.txt 输出文件 tmp.txt

至于你的新要求,给你提示记录地点的方法.你可以rewind(fin),从头一个字一个字读,读一个输出一个,读到的位置等于POS[i]-80时,读80个字但不输出,这就去掉了80个字.
例如找到的POS[]共NN个。
#define buff_size 1024
long int n,n1,n2,i,j,k;
char *buff;
buff=(char*) malloc(buff_size * sizeof(char));
rewind(fin);
for(k=0;k<NN;k++){
if (k==0) {n=POS[k]-80;} else {n=POS[k]-POS[k-1]-80;};
n1 = n / buff_size; n2 = n % buff_size;
if (n1 >0) for (i=0;i<n1;i++){
fread(buff,sizeof(char),buff_size,fin);
fwrite(buff,sizeof(char),buff_size,fout);
};
if (n2 > 0) {fread(buff,sizeof(char),n2,fin);
fwrite(buff,sizeof(char),n2,fout);
};
fread(buff,sizeof(char),80,fin);
for (i=0;i<80;i++) buff[i]='0'; buff[80]='\0';
fwrite(buff,sizeof(char),80,fout);
} ; end for k
这里请自己写 读最后一段,无需改零,读一个字,输出一个字,直到EOF.
-----------------
#include <stdio.h>
#include <stdlib.h>

void main (int argc, char *argv[])
{
FILE *fin,*fout;
char namein[72]="a.txt";
char nameout[72]="tmp.txt";
char target[120],tidai[120];
char work[120];
int L1,L2,i,k=0;
int numread;
fpos_t pos;
fpos_t POS[100];

printf("Enter target string: ");
scanf("%s",&target[0]);
L1 = strlen(target);
printf("Enter replace string: ");
scanf("%s",&tidai[0]);
L2 = strlen(tidai);

if ( (fin = fopen(namein,"rb") ) == NULL ) {
printf("\007Cann't open input file: %s ", namein);exit(1);
};

if ( (fout = fopen(nameout,"wb") ) == NULL ) {
printf("\007Cann't open temp work file: %s ", nameout);exit(1);
};

Lab1:
numread = fread( work, sizeof( char ), L1, fin );
if (numread < L1) {
// fwrite( work, sizeof( char ), numread, fout );
goto done;
};
if ( strncmp(work,target,L1) == 0 ){
// fwrite( tidai, sizeof( char ), L2, fout );
if( fgetpos( fin, &pos ) != 0 ) perror( "fgetpos error" );
else { POS[k] = pos-L1; k=k+1;};

goto Lab1;
};

Lab2:
// fwrite( &work[0], sizeof( char ), 1, fout );
for (i=0;i<L1-1;i++) work[i]=work[i+1];
fread( &work[L1-1], sizeof( char ), 1, fin );
if (feof(fin)) {
// fwrite( &work[1], sizeof( char ), L1-1, fout );
goto done;
};
if ( strncmp(work,target,L1) == 0 ){
// fwrite( tidai, sizeof( char ), L2, fout );
if( fgetpos( fin, &pos ) != 0 ) perror( "fgetpos error" );
else { POS[k] = pos-L1; k=k+1;};
goto Lab1;
} else {goto Lab2;};

// 新述 rewind(fin); 那部分程序语句插在这里,声明放前面

done: fclose(fin);fclose(fout);
printf("output in %s\n",nameout);
for (i=0;i<k;i++){
printf("%ld \n",(long int) POS[i]);
}
exit(0);
}

3. C语言中如何在文件内查找关键字并替换

示例代码:
#include
struct
data
{
char
data_1;
int
data_2;
};
int
main(int
argc,
char
*argv[])
{
int
i,
j,
n
=
0;
struct
data
d3[]
=
{
{'a',
1},
{'b',
2},
{'a',
3}
};
struct
data
one_class[3]
=
{0};
for(i
=
0,
j
=
0;
i
<
3;
i++)
if
(d3[i].data_1
==
'a')
one_class[j++]
=
d3[i];
n
=
j;
for(j
=
0;
j
<
n;
j++)
printf("%p
",
&one_class[j]);
printf("\n");
return
0;
}
假设要在一个结构体数组d3中寻找满足data结构体中成员data_1等于字符a的所有结构体并将其存入one_class数组中,并且最后打印出符合要求结构体的地址,不知道你的问题是不是类似这样的情况?

4. C语言:在当前目录下的文件中查找记录并输出到屏幕,咋编

代码文本:

#include "stdio.h"

#include <string.h>

struct STU{

char nm[21],id[12];

int s[5];

};

int main(int argc,char *argv[]){

struct STU stu;

char ts[21];

FILE *fp;

if(fp=fopen("stu.dat","r")){

printf("Please enter a name or ID... ");

scanf("%20s",ts);

printf(" To find the result is: ");

while(fscanf(fp,"%s%s%d%d%d%d%d",stu.nm,stu.id,stu.s,stu.s+1,stu.s+2,stu.s+3,stu.s+4)!=EOF)

if(strcmp(ts,stu.nm)==0 || strcmp(ts,stu.id)==0){

printf(" %s %s%4d%4d%4d%4d%4d ",stu.nm,stu.id,stu.s[0],stu.s[1],stu.s[2],stu.s[3],stu.s[4]);

fclose(fp);

return 0;

}

printf("Not find... ");

fclose(fp);

}

else

printf("Open the file failure, exit... ");

return 0;

}

5. 在c语言中读写文件如何查找特定名称的文件

打开文件,遍历文件内容然后一个一个匹配查找就好了。
下面是一段示例代码:
#include<stdio.h>
#include<string.h>
#include<dir.h>
#define
SIZE
12
void
find
_creat
_file(char
*);
int
main(void)
{
char
filename[SIZE];
strcpy(filename,"filename");
find_creat_file(filename);
getch();
return
0;
}
void
find_creat_file(char
*filename)
{
struct
ffblk
ffblk;
int
done;
done=
findfirst
("d:\\filename",&ffblk,0);
if(done==0)
return
0;
else
mkdir("d:\\filename");
}

6. c语言命令行在一个文件中查找另一个文件指定的内容

你试一下不就知道了。

7. c语言编程~~!!实现txt文件中的查找与替换功能。

刚好昨天有人问了,不过他得分是100、、、你们是不是一个学校的,作业都一样
你拿去试试,不行再说
不懂hi我
#include
<stdio.h>
#include
<string.h>
#include
<stdlib.h>
void
file_replace(FILE
*fp_in,FILE
*fp_out,char
*src,char
*dst)
{
char
c=fgetc(fp_in);
char
tmp[100];
int
count=0;
while(c!=EOF)
{
int
pPos=0;
if(c!=src[pPos])
{
fputc(c,fp_out);
c=fgetc(fp_in);
continue;//如果当前字符不相等,继续下一个字符
}
memset(tmp,0,100);
while(c==src[pPos])
{
tmp[pPos]=c;
c=fgetc(fp_in);
pPos++;//相等的部分跳过
}
if(src[pPos]=='\0')
{
count++;
printf("源串已找到!替换%d处\n",count);
fputs(dst,fp_out);
continue;
}
else
{
fputs(tmp,fp_out);
continue;//如果当前字符不相等,继续下一个字符
}
}
return;
}
void
main()
{
char
path[100],old_path[100];
printf("请输入文件路径:\n");
gets(path);
strcpy(old_path,path);
FILE
*fp_in;
FILE
*fp_out;
fp_in=fopen(path,"rt");
fp_out=fopen(strcat(path,".bak"),"wt");
if(!fp_in||!fp_out)
{
printf("File
open
error!");
return;
}
char
src[100],dst[100];
printf("请输入要替换的源串:\n");
gets(src);
printf("请输入要替换的目的串:\n");
gets(dst);
file_replace(fp_in,fp_out,src,dst);
fclose(fp_in);
fclose(fp_out);
char
cmd[200]="
";
strcat(cmd,path);
strcat(cmd,"
");
strcat(cmd,old_path);
system(cmd);
memset(cmd,0,200);
strcat(cmd,"del
");
strcat(cmd,path);
system(cmd);
}

8. c语言从文件中查找字符串

c语言从文件中查找字符串的方法。

如下参考:

1.打开python命令窗口,定义并分配字符串变量s1。

9. C语言如何从文件中查找指定的字符,然后替换它

这个很简单呢,你只要去循环比对
/*检查data字符串,是否samplestr的一个子串,samplestr的各个字串以|分隔*/
int
CheckStrIn(char
*data,char
*samplstr)
{
int
i,ilen,icount;
char
*sp;
sp=samplstr;
ilen=strlen(samplstr);
for(i=0,icount=1;i<ilen;i++,sp++)
{
if(*sp=='|')
icount++;
}
ilen=strlen(data);
for(i=0;i<icount;i++)
{
if(memcmp(data,searchsplit(samplstr,i),ilen)==0)
return
1;
}
return
0;
}
如果是则替换掉

热点内容
翁虹ftp 发布:2025-02-09 14:02:54 浏览:129
java加密对称 发布:2025-02-09 13:55:49 浏览:410
坤诩钱包为什么没有安卓版 发布:2025-02-09 13:50:49 浏览:297
存储过程性能优化 发布:2025-02-09 13:42:59 浏览:727
源码失窃 发布:2025-02-09 13:38:34 浏览:525
自动浏览器脚本 发布:2025-02-09 13:37:00 浏览:139
易语言问道源码 发布:2025-02-09 12:59:03 浏览:662
ip和服务器有关吗 发布:2025-02-09 12:51:26 浏览:950
极光免费脚本 发布:2025-02-09 12:50:33 浏览:394
c存储过程返回结果集 发布:2025-02-09 12:42:00 浏览:150