一个困扰我们班同学两天的问题,请教各位高手解决,谢谢各位啦!不甚感激啊!
小弟,C语言初学者,有什么说的不对的地方希望大家不要喷我哈,不过我还是挺感兴趣的,希望大家能帮助我哈!
这样一个问题,前几天数据结构课老师讲了substring的字串截取功能,然后就联想到C语言中的strstr函数,找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符),然后就是想不调用库函数实现这个功能,搞了两天问题重重真是纠结,不过也很有趣哈哈。
程序是这样的:
#include <stdio.h>
#include <string.h>
int main()
{
char i[]={'a','b','c','d','e','f'}, j[]={'e','f'},k[2];
int len, m, q=0, n=0;
len = strlen(j);
while(true)
{
for(m=0 ; m<len ; m++)
{
k[m]=i[q++];
}
if(strcmp(j,k))
{
n++;
q=n;
}
else
{
printf("%d\n", n);
return 0;
}
}
}
变量定义的有点乱,初学者忘大家体谅哈。。。
貌似问题挺多的,字符串存入字符数组的过程好像有错,然后如果这样写的话{}里面最后要加一个'\0',要不然好像字符数组里垃圾一大堆。
有没有大虾能帮我改改这段程序啊?在下不甚感激.....
[解决办法]
#include <stdio.h>
#include <string.h>
int main()
{
char i[]={'a','b','c','d','e','f','\0'}, j[]={'e','f','\0'},k[3];
int len, m, q=0, n=0;
len = strlen(j);
while(true)
{
for(m=0 ; m<len ; m++)
{
k[m]=i[q++];
}
k[2]='\0';
if(strcmp(j,k))
{
n++;
q=n;
}
else
{
printf("%d\n", n);
return 0;
}
}
}
注意strcmp(比较的是两个字符串,而楼主定义的是一个字符数组,字符串是以\0结尾的,要不strcmp函数不知道该比较的什么地方)
[解决办法]
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ char *i="abcdefg"; char *j="ef"; char *k = (char *)malloc(3); int len, m, q = 0, n = 0; len = strlen(j); while(true) { for(m = 0; m < len; m++) { *(k + m) = i[q++]; } *(k + 2) = '\0'; if(strcmp(j,k)) { n++; q = n; } else { printf("%d\n", n); return 0; } }}