首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个困扰小弟我们班同学两天的有关问题,高手解决,多谢各位啦!不甚感激啊

2012-04-01 
一个困扰我们班同学两天的问题,请教各位高手解决,谢谢各位啦!不甚感激啊!小弟,C语言初学者,有什么说的不对

一个困扰我们班同学两天的问题,请教各位高手解决,谢谢各位啦!不甚感激啊!
小弟,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函数不知道该比较的什么地方)
[解决办法]

C/C++ code
#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;        }    }} 

热点排行