用C语言编程解决从已知字符串中找出包含k个字符的所有“子串”,并打印。

用C语言编程解决从已知字符串中找出包含k个字符的所有“子串”,并打印。,第1张

#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界面)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9311317.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存