C的字符保存转换

来源:百度知道 编辑:UC知道 时间:2024/06/30 10:05:08
大家好啊,有个问题哪为大虾帮小弟解决下
输入n个字符(要求有多个china)并保存到文件test.txt中,然后把文件中所有的字符串china替换成chinese.并保存到原文件中
能给出C源程序让小弟参考下吗

就是个字符串匹配问题,只要找到文件中的china字符串不就什么都解决了吗, 你可以采用KMP模式串匹配算法和简单匹配算法..

简单匹配算法, 我这里假设i为主串中位置, j 为子串中的位置 , 当主串比较到 i位置,子串比较到j 位置, 字符不相同, 则j 跳回 子串首位置, i 跳到 i-j+2 的位置 ..

模式匹配, 即利用已经得到的部分匹配信息来进行后面的匹配过程, 其实就是根据子串的模式值next[n]来移动子串的j 指针, 串的模式值next[n]很好算,我给你给例子 , 要找的串: abcabcads
next[n]: 011123451
方法; 首先头两个ab的模式值设为 0 ,1 . 后面的c 则根据,c 前面的字符有几个相等决定, 如例子中 c前面为 ab, a和b不相等. 则相等的数目为0 ,则c对应的模式值为 0 + 1= 1 。 同理, 如例子中第二个c , 其前面为abcab, 则头两个ab与后两个ab相同, 则此c的模式值为 2 + 1=3 。 如此,你可以自己推推后面的 。。。。模式next 中的值就是 j 指针回跳的值。如果主串和子串在第二个c的位置不匹配, 则j 回跳到3个单元。

如果你觉得我说得太含糊 ,你可以到
http://blog.163.com/hn_pt/blog/static/2508542620075442249970/
上面去看一下...

我写出来了,Q我吧!416998098