1. 关于BF算法的c语言实现
我修改的程序都是把S[0] T[0]转换为strlen(S) strlen(T)函数来实现的
为什么不把strlen(S),strlen(T)分别赋予S[0],T[0],害怕覆盖原来的数据吗?没有必要,他们原本就是来存储这个数据的,君不见,它们都不参与匹配!他们的初始化应该在这个函数之外完成,在每次数组长度改变后,就及时设置,换句话说,在调用这个函数之前,应该保证他们已经设置正确,
在打印时,应该从第二个元素S[1]或T[1]开始,因为S[0],T[0]不再是数组的实际内容
不知道我有没有表述清楚,
一般,数组的第一个元素存放实际的内容,而你这里并不是这样,数组的第一个元素不再是数组的实际内容,而是数组长度
==================================================================
补充;
比较大小时S[0]的值不就变成了整形的ASCII码值了么?
1.整数就是整数,没有ASCII码,ASCII码是针对字符的
2.在C中,整数赋予字符变量是合法的
2.在C中,字符与整数的关系运算也是合法的,当你要把一个字节的数解释成字符的时候,它就是字符,可他存储的还是数啊,就把它当整数用吧,毕竟我们没有打算打印它,当然它能表示的整数太少了,所以数组长度受到限制
如果你要以字符显示它,那它当然是那个整数所对应的字符,如果那是可打印字符的话
2. c语言字符串操作演示程序设计求大神= =
(1)字符串初始化InitString。--------->InitString()
(2)字符串输入InputString。--------->InputString()
(3)字符串输出OutputString。--------->OutputString()
(4)给定字符串,求串长StringLen。--------->StringLen()
(5)给定位置,串插入InsertStringbyLocation。--------->InsertStringbyLocation()
(6)BF算法查找字符串BFSear1ch。--------->BFSear1ch()
(7)KMP算法查找字符串KMPSearch。--------->KMPSearch()
你的理解弊或罩有问题,剩下的应团则该怎么做不用我说了,上面的函租闹数都是没有返回值和参数的,这个要你自己定了
3. 数据结构 BF算法
建议动手画一画会比较直观
i,j是这里作位置指针 i指向SString S中的一个位置 j指碰慧向SString T的一个位置
while后的括号笑轿答中是循环继续的条件
很多地方字符串本身可以理解成一个字符构成的数组
S[0]这里指0号位置的内容 这里用既然用i,j和这个0#内容比较来帆拆确定何时结束循环
即可以把0号位置的内容理解为i最终的移动位置 j同理
这里++i和i++皆可 先加后加不影响 因为本句里已经没有再用到i的值了
最后一句 如果j>T[0]导致循环结束,此时返回i,这里i是一个在S中移动最终位置
与T[0]的差 相当于两个最终位置间的距离
另外 一般用return 0 表示正常返回
强烈建议动手画 文字表述不能很直观
4. 如何用C语言或者C++在给定文本中查找并定位字符串
http://ke..com/view/4462643.htm
这里有答案。。。你要是还不会的话找我。。QQ群:110675294里面有人会给你回答的
5. 一个简单的小程序 C语言 BF算法
引用没问题,就是BF函数错了。
#include<stdio.h>
#include<string.h>
#include<iostream>//.h去掉
usingnamespacestd;//命名空间
intBF(charS[],charT[])
{
inti,j,start;
i=0;
j=0;
start=0;
while(S[i]!='