c语言从文件查找字符串,C语言文件中字符串的查找与替换?
C语言文件中字符串的查找与替换?
#include
#include
#include
#include
int Count=0;
int findNum(char *str)
{
int i=0,t1=0;
FILE *p;
char ch;
if((p=fopen("image.gl","rb"))==NULL)
{
printf("\n打开文件失败\n");
exit(4);
}
while((ch=fgetc(p))!=EOF)
{
if(ch==str[t1])
t1++;
else
t1=0;
if(t1>=strlen(str))
{
printf("找到字符串%s位置为%d\n",str,i-strlen(str)+1);
Count = i-strlen(str)+1;
i=1;
break;
}
i++;
}
fclose(p);
if(!i) return 0;
return i;
}
int main(void)
{
FILE *in,*out;
char *str1="1234567";
char *str2="abcdef";
int i=0,j=0,t1=0,t2=0;
char ch;
if((t1=findNum(str1))==0)
{
printf("没有找到字符串%s\n请按任意键退出\n",str1);
return -1;
}
if((t2=findNum(str2))==0)
{
printf("没有找到字符串%s\n请按任意键退出\n",str2);
return -2;
}
if((in=fopen("image.gl","rb"))==NULL){
printf("\n打开文件失败\n");
exit(2);
}
if((out=fopen("image_new.gl","wb"))==NULL){
printf("\n创建新文件失败\n");
exit(3);
}
i=0;
/* start copy */
while((ch=getc(in))!=EOF)
{
if(t1||t2)
{
if(Count<=80)
{
if(i<=Count) fputc('0',out);
else fputc(ch,out);
}
else
{
if((i>=(Count-80))&&(i<=Count)) fputc('0',out);
else fputc(ch,out);
}
i++;
}
}
fclose(in);
fclose(out);
printf("替换完成!\n任意键关闭!\n");
getch();
}
问题:目前无法确定是否找到了字符串并且替换,而且生成出的文件始终为381KB,请高手予以调试修改!感谢!
雷老虎66
发布
1个回答
void Substitute(char *pInput, char *pOutput, char *pSrc, char *pDst)
{
char *pi, *po, *p;
int nSrcLen, nDstLen, nLen;
// 指向输入字符串的游动指针.
pi = pInput;
// 指向输出字符串的游动指针.
po = pOutput;
// 计算被替换串和替换串的长度.
nSrcLen = strlen(pSrc);
nDstLen = strlen(pDst);
// 查找pi指向字符串中第一次出现替换串的位置,并返回指针(找不到则返回null).
p = strstr(pi, pSrc);
if(p)
{
// 找到.
while(p)
{
// 计算被替换串前边字符串的长度.
nLen = (int)(p - pi);
// 复制到输出字符串.
memcpy(po, pi, nLen);
memcpy(po + nLen, pDst, nDstLen);
// 跳过被替换串.
pi = p + nSrcLen;
// 调整指向输出串的指针位置.
po = po + nLen + nDstLen;
// 继续查找.
p = strstr(pi, pSrc);
}
// 复制剩余字符串.
strcpy(po, pi);
}
else
{
// 没有找到则原样复制.
strcpy(po, pi);
}
}
◆◆
评论读取中....
请登录后再发表评论!
◆◆
修改失败,请稍后尝试
精华知识
c语言从文件查找字符串,C语言文件中字符串的查找与替换?相关推荐
- java字符串数组转json_java中字符串String格式转化成json格式
java字符串数组转json_java中字符串String格式转化成json格式 String s= Connection.deleteHost("10310");System.o ...
- linux模糊匹配文件并删除,在Linux系统中使用dupeGuru查找并移除重复文件的教程
简介 对我们来说,磁盘被装满是棘手问题之一.无论我们如何小心谨慎,我们总可能将相同的文件复制到多个不同的地方,或者在不知情的情况下,重复下载了同一个文件.因此,迟早你会看到"磁盘已满&quo ...
- python字符串怎么表示_python中字符串的几种表达方式(用什么方式表示字符串)...
原博文 2018-11-21 18:45 − 说明: 今天在学习python的基础的内容,学习在python中如何操作字符串,在此记录下. 主要是python中字符串的几种表达,表示方式. pytho ...
- linux下字符串操作,Linux Bash 中字符串操作
所谓"子字符串"就是出现在其它字符串内的字符串. 比如 "3382" 就是 "this is a 3382 test" 的子字符串. 我们有 ...
- linux bash 字符串 连接,Linux Bash 中字符串操作
Linux Bash 中字符串操作 所谓 "子字符串" 就是出现在其它字符串内的字符串. 比如 "3382" 就是 "this is a 3382 t ...
- 怎么把字符串变成数组_Java中字符串split() 的使用方法,没你想的那么简单
先看下面的方法,事先预测一下,经过split方法,按逗号进行分割为数组之后,生成的数组的长度是多少,目测很多人都觉得是8,但是结果却出乎意料.是5而不是8. private static void t ...
- java 字符串不等于_java中字符串不等于怎么判断
java中字符串不等于可以使用equals()方法判断,equals()方法用于将字符串与指定的对象比较. 语法public boolean equals(Object anObject) 参数 an ...
- java中字符串不等于_java中字符串不等于怎么判断
java中字符串不等于可以使用equals()方法判断,equals()方法用于将字符串与指定的对象比较. 语法public boolean equals(Object anObject) 参数 an ...
- java中对字符串进行解析_Java中字符串解析
1.字符串不属于基本数据类型(基本数据类型有[byte,int,char,float,double,boolean,short,long]),字符串由单个或多个字符组成,本质上是字符数组,Java中提 ...
- python字符串排序_列表中字符串按照某种规则排序的方法(python)
原博文 2017-05-05 16:35 − 有时候处理数据时,想要按照字符串中的数字的大小进行排序. 譬如,存在一组记录文件,分别为'1.dat','2.dat'... 当我把该文件夹中的所有记录文 ...
最新文章
- R语言ggplot2可视化为复杂图自定义图例、手动构造图例(legend)实战
- linux显示磁盘使用情况命令,Linux显示磁盘使用率信息(iostat)
- 【Matlab】绘制热力图和三维热力图
- 小辣椒p60手机怎么样_小辣椒双机来临,搭载联发科 最低499元
- Git commit your changes or stash them before you can merge
- 【飞控理论】从零开始学习Kalman Filters之二:最优状态估计、最优估计算法和方程
- 2021年度 Egon Balas 奖得主:达摩院印卧涛
- ISDN-PRI,1号,7号信令的基础知识
- 同态滤波 matlab代码,同态滤波处理光照不均匀图像Matlab代码
- python编解码的字节与字符串相互转换
- 什么是商业模式(概念篇)
- python 多行注释_python 多行注释
- 金碟打印凭证或多联纸格式时十几张后错位
- 用计算机算术表白,数学表白密码
- 孢子社群:今日推荐人工智能微信群:TensorflowNews.com 9群
- 标梵分享微信官方账号运营推广思路
- 《我是黑社会》--郭德纲相声
- 谷歌浏览器选择已保存的账号密码,输入框变色
- mybatis入门学习(九) -DB环境切换、使用注解、事务提交、获取自增ID、多参数传参、鉴别器、内置参数、批量写入、Oracle字段无法插入 null 值
- Windows10更新后打开word是写字板形式解决方法
热门文章
- 接收list对象_PyTorch入门视频笔记从数组、列表对象中创建Tensor
- 安卓开发mysql数据库_Android编程之数据库的创建方法详解
- 自动工作负载信息库 AWR
- mysql显示表格前五行,深入浅出MySQL勘误表
- 不搞虚的!快速把你拉入Docker 的门里
- windows系统下maven环境搭建
- android中sharedPreferences的用法
- 12-Juice饮料
- Numpy数据的操作 * dot() multiply() 的区别
- 转载:(C++)浅谈多态基类析构函数声明为虚函数