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

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

谢谢各位高手指点:)
...全文
614 点赞 收藏 13
写回复
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()
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告