
#include <stdioh>
#include <stringh>
char str[16];
int strlength;
int sublength;
char substr[8];
int cnt;
void findSubStr(int num,int startno);
int main(int argc, char argv[])
{
memset(str,0,sizeof(str));
memset(substr,0,sizeof(substr));
strlength = 8;
sublength = 4;
cnt = 0;
int num = 0;
int startno = 0;
memcpy(str,"ABCDEFGH",sizeof("ABCDEFGH"));
findSubStr(num,startno);
printf("\n");
return 0;
}
void findSubStr(int num,int startno)
{
int i;
for(i = startno;i<=(strlength - sublength + num);i++){
substr[num] = str[i];
if (num >= (sublength-1)){
printf("%s\n",substr);
} else {
findSubStr(num+1,i+1);
}
}
}
上面代码是从“ABCDEFGH”中打印出包括4个字符的所有子串。
compare函数中
ret=z-x;
if(x=='\0')
{
break;
}
有明显的逻辑错误。当x比z短时x=='\0'为“真”而break了,但这时ret是一个不为'\0'的字符与'\0'的差的int值,而非你需要的-1、0、+1逻辑值。比如z是"abcd",x是"abc",最后ret='d'-'\0'=100,把100返回了,而不是返回需要的+1。问题已指出,你自己改吧!
定义为:char p;
完整的程序如下:
#include<stdioh>
#include<stringh>
void main()
{
int i;
char a[30],ch;
char p;//这里!这里!这里!这里!这里!这里!这里!这里!这里!这里!
gets(a);//输入带空格字符的字符串,赋予字符数组变量a
ch=getchar();//输入要查找的字符赋予字符变量b
p=strchr(a,ch);//查找字符位置函数
if(p!=NULL)
printf("在字符串%s中以字符%c开始的子串为%s\n",a,ch,p);
else
printf("在字符串%s中没找到字符%c\n",a,ch);
}
以上就是关于用C语言编程解决从已知字符串中找出包含k个字符的所有“子串”,并打印。全部的内容,包括:用C语言编程解决从已知字符串中找出包含k个字符的所有“子串”,并打印。、C语言关于寻找字符串中子串函数,不知道错误在哪、关于查找字符串子串的C语言程序(VC界面)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)