用C语言怎样对一个文本文件的的若干字符进行查找并替换?

HR-TANG 2005-06-16 04:49:38
1.用C语言对一个文本文件中的若干字符(如在 CPRINTPROGRAM,HELPME 中找找HELP,并可以用别的字符来替换它)进行查找,并替换,并且在同一个文件中要查找并替换若干次不同的字符.
请尽量讲详细一些,最好有例题.
2.另外还有一个问题,就是把一个字符型数组转换成一个整型数或者是其它类型的数据.

谢谢各位高手指点:)
...全文
816 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jixingzhong 2005-06-18
  • 打赏
  • 举报
回复
字符型数组转换成一个整型数

atoi()


其它类型的数据: float--------atof()



总之,使用相应的库函数就可以了

gogdo 2005-06-18
  • 打赏
  • 举报
回复
当然先要从数组里读入啦!

HR-TANG 2005-06-18
  • 打赏
  • 举报
回复
从字符串中搜索字符的函数:strchr()---------返回的是什么值啊?
从字符串中搜索字符串的函数:strstr()-------返回的是什么值啊?

是不是得先把文本文件中的内容读到一个数组中才能够进行操作啊?


heguosheng 2005-06-18
  • 打赏
  • 举报
回复
mark
holymoon858 2005-06-18
  • 打赏
  • 举报
回复
对文本文件的替换处理一般有两种方法:

1. 对小文件,读入整个文件内容到字符串,然后使用上述方法;

2. 对大文件,可以使用临时文件的方法,具体的处理又有很多方式,可以自己思考思考。
HR-TANG 2005-06-17
  • 打赏
  • 举报
回复
自么没有人给解答一下啊!
自已帮忙顶一下.
younggundog 2005-06-17
  • 打赏
  • 举报
回复
//未用库函数.
#include <iostream>
using namespace std;
int StrLen(const char *chSrc)
{
int iLen = 0;
const char *pch = chSrc;
while (*pch++ != '\0')
{
iLen++;
}
return iLen;
}

char *FindFirstStr(char *chDest, const char *chSrc)
{
char *pchDest = chDest;
const char *pchSrc = chSrc;
int iIndex = 0;
int iSrcSize = StrLen(chSrc);
while ((pchSrc!=NULL) && (pchDest!=NULL) && (iSrcSize > iIndex))
{
if ((*pchSrc++) != (*pchDest++))
break;
iIndex++;
}
return iSrcSize == iIndex ? (pchDest-iIndex) : NULL;

}

char *RePlace(char *chDest, const char *chSrc, int size)
{
char *pchDest = chDest;
const char *pchSrc = chSrc;
char *ptemp = NULL;
int iSrcSize = StrLen(pchSrc);
int iDestSize = StrLen(pchDest);
if (iSrcSize > size)//先向后一.
{
pchDest += iDestSize + iSrcSize - size;
ptemp = chDest + iDestSize;
while (iDestSize)
{
*pchDest-- = *ptemp--;
// *pchDest = *(pchDest-1);
// pchDest--;
iDestSize--;
}

}
else
if (iSrcSize <size)
{
pchDest += iSrcSize;
while (*pchDest!='\0')
{
*pchDest = *(pchDest+1);
pchDest++;
}
}
pchDest = chDest;
while (*pchSrc != '\0')
{
*pchDest++ = *pchSrc++;
}
return chDest;
}

int main(int k, char *t[])
{
char chStr[100];
char chFindStr[10];
char chReplaceStr[10];
char *pchFind = NULL;
char *pch = chStr;
int iSize = 0;
cout << "please input the Src str:" << endl;
cin >> chStr;
cout << "please input the Find str:" << endl;
cin >> chFindStr;
cout << "please input the replace str:" << endl;
cin >> chReplaceStr;
iSize = StrLen(chStr);
chStr[iSize] = '\0';
iSize = StrLen(chFindStr);
chFindStr[iSize] = '\0';
iSize = StrLen(chReplaceStr);
chReplaceStr[iSize] = '\0';
while (*pch != '\0')
{
pchFind = FindFirstStr(pch, chFindStr);
if (pchFind != NULL)
{
int iSize = strlen(chFindStr);
RePlace(pchFind, chReplaceStr,iSize);
cout << chStr <<endl;

pch = chStr;
}
pch++;
}
cout << "result:" <<endl;
cout << chStr <<endl;
return 0;
}

holymoon858 2005-06-17
  • 打赏
  • 举报
回复
从字符串中搜索字符的函数:strchr()
从字符串中搜索字符串的函数:strstr()

对于替换的工作就要自己去完成,如"abcd123efg"中把"123"替换成"xxxx",先用strstr()找到"123"字符串在源字符串中开始的位置,然后把"efg"字符串往后拷贝一位,可以使用memmove(),再使用memcpy()把"xxxx"拷贝到"123"开始的位置;对"123"替换成"xx"的情况,就把"efg"字符串往前拷贝一位,然后把"xx"拷贝到"123"开始的位置;"123"替换成"123"的情况,应该不用我说了;

对存在多个搜索字符串的情况,如"abcd123efg123kdi"的,对上述工作做循环处理即可。
HR-TANG 2005-06-16
  • 打赏
  • 举报
回复
能不能给详细一点,讲个例题吧!谢了!
hofer_song 2005-06-16
  • 打赏
  • 举报
回复
strcat();strncat();
strcmp();strncmp();
strcpy();strncpy();
HR-TANG 2005-06-16
  • 打赏
  • 举报
回复
字符串数组类型转换已搞定,请各位介绍一下文本的查找和替换,谢谢匪徒:)
HR-TANG 2005-06-16
  • 打赏
  • 举报
回复
能不能写详细一些!
这个函数在哪个头文件里面啊
zhousqy 2005-06-16
  • 打赏
  • 举报
回复
atoi()
基于目标级联法的微网群多主体分布式优化调度(Matlab代码实现)内容概要:本文介绍了基于目标级联法(Analytical Target Cascading, ATC)的微网群多主体分布式优化调度方法,并提供了相应的Matlab代码实现。该方法将微网群系统分解为多个相互关联的子系统,通过协调各子系统的局部优化目标来实现全局优化,适用于包含多种分布式能源、储能装置和负荷的复杂微网群系统。文中详细阐述了ATC的数学模型构建、分解协调机制、收敛性处理及迭代优化过程,强调了其在保护各微网主体独立性和隐私性的同时,实现整体运行经济性与稳定性的优势。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事微电网、综合能源系统优化调度的工程技术人员。; 使用场景及目标:①用于研究多微网系统在分布式架构下的协调优化调度问题;②解决传统集中式调度带来的计算负担重、隐私泄露风险高等问题;③实现微网群运行成本最小化、可再生能源消纳最大化及系统稳定性提升等多重目标; 阅读建议:建议读者结合Matlab代码深入理解目标级联法的迭代流程与变量传递机制,重点关注子问题分解策略与一致性约束的处理方式,并可通过修改系统参数或引入新的约束条件进行扩展性实验。

70,038

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧