㈠ 字符串匹配问题(c语言)
说说我的思路吧。思路清楚了写起来很简单。
首先判断循环次数为str1的长度。for(i = 0 ; i < strlen(str1) i++).通过循环长度查找与str2匹配的字符串。
从str1的第一个字符开始进行比较,里面是个小循环,for(j = 0 ; j < strlen(str2) ;j++);比较从str1开始的str2字符串的长度。如果不相等,从str1的第二个字符串开始比较,如果相等则把str3的字符替换到str1的匹配字符中去,并让循环i+strlen(str2)-1;以此类推即可实现所有的变换
㈡ C语言怎么实现字符串的匹配
p=="delete"要改成用strcmp(p, "delete") == 0 来进行字符串匹配。
你的写法是判断两个指针地址是否相等,而不是指针指向的内容相同。
p和"delete"的地址原本就不相等,一个指向了栈上分配了10个字节的空间,空间的内容是"delete",另一个指向了常量区的"delete"。
请采纳,谢谢
㈢ C语言 字符串匹配
#include<stdio.h>
constcharkey[][12]={"happy","new","year","2014"};
//是否完全匹配某一个特定的key
intmatch1(constchar*s,constchar*t)
{
while(*s&&*t&&*s++==*t++);
return!(*s||*t);
}
//是否匹配一组key的中一个
intmatch(constchar*s)
{
inti,j;
for(i=0;i<sizeofkey/sizeofkey[0];i++)
if(match1(s,key[i]))
{
//如果匹配到某个key,则打印匹配到的key
for(j=0;key[i][j];j++)putchar(key[i][j]);
putchar(' ');
return1;
}
return0;
}
intmain()
{
chars[BUFSIZ];
inti,k;
//输入一个字符串
for(i=0;i<BUFSIZ&&(s[i]=getchar())!=' ';i++);
s[i]='