诸位高手帮我我看看这个c小程序问题出在哪 源代码如下 运行时没有结果 程序功能是 从字符串string1中提取字符串st

软件和网站开发以及相关技术探讨
回复
ahnuzq
帖子: 1
注册时间: 2008-10-23 19:56
送出感谢: 0
接收感谢: 0

诸位高手帮我我看看这个c小程序问题出在哪 源代码如下 运行时没有结果 程序功能是 从字符串string1中提取字符串st

#1

帖子 ahnuzq » 2009-03-18 21:13

诸位高手帮我我看看这个c小程序问题出在哪 源代码如下 运行时没有结果 程序功能是 从字符串string1中提取字符串string2
诸位大侠 帮我我看看这个c小程序问题出在哪 源代码如下 能编译过去 运行时没有结果 程序功能是 从字符串string1中提取字符串string2
#include<stdio.h>
int main()
{
int i=0,j=0,k=0;
char string1[]="adsownifowwe";
char string2[]="ow";
char *p,*a;
p=string1;
a=string2;
for(;*p!='\0';p++,i++)
{
if(*a=*p)
{
a++;
j++;
if(*a='\0')
{ printf("string1 has string2 at %d \n",i);
a=a-j;
j=0;
k++;
}
}else
{
a=a-j;
p=p-j;
i=i-j;
j=0;
}
}
if(k=0)printf("string1 doesn't have string2"};
}
头像
libralibra
帖子: 401
注册时间: 2008-02-23 17:31
送出感谢: 0
接收感谢: 1 次
联系:

Re: 诸位高手帮我我看看这个c小程序问题出在哪 源代码如下 运行时没有结果 程序功能是 从字符串string1中提取字符串st

#2

帖子 libralibra » 2009-03-18 22:54

代码: 全选

//从string1里面查找string2第一次出现的位置,
//位置从0开始

#include <stdio.h>
#include <stdlib.h>

int main(){
    int i=0,j=0,k;
    char string1[80];
    char string2[80];
    printf("Please input string1:\n");
    scanf("%s",string1);
    printf("Please input string2:\n");
    scanf("%s",string2);
    
    while(string1[i] != '\0')
    {
        if(string1[i]!=string2[j])
        {
            i++;
        }else{
            while(string2[j] != '\0')
            {
                if(string2[j]==string1[i])
                {
                    i++;j++;k=i;
                }else{
                    k=0;break;
                }
            }
            break;
        }
    }
    
    if(k!=0)
    {
        printf("The sring2 is at the %d postion(start from 0) of string1.\n", k-j);
    }else{
        printf("String2 is not in string1.\n");
    }
    
    system("PAUSE");
    return 0;
}
上次由 libralibra 在 2009-03-29 19:38,总共编辑 1 次。
My Blog: matlab, ubuntu, python
http://goo.gl/GDIO
头像
libralibra
帖子: 401
注册时间: 2008-02-23 17:31
送出感谢: 0
接收感谢: 1 次
联系:

Re: 诸位高手帮我我看看这个c小程序问题出在哪 源代码如下 运行时没有结果 程序功能是 从字符串string1中提取字符串st

#3

帖子 libralibra » 2009-03-29 19:33

上面的代码有点bug,输入的字符串有空格就会有问题,下面的代码可以接受空格:

代码: 全选

/*
  Description:  从string1里面查找string2第一次出现
*/

#include <stdio.h>
#include <stdlib.h>

int main(){
    int i=0,j=0,k=0,b=0;
    char string1[80];
    char string2[80];
    char ch;
    printf("Please input string1:\n");
    //can recieve strings with space
    while((ch = getchar())!='\n' && i<80)
    {
        string1[i++] = ch;
    }
    string1[i] = '\0';
    //scanf("%s",string1);
    printf("Please input string2:\n");
    while((ch = getchar())!='\n' && j<80)
    {
        string2[j++] = ch;
    }
    string2[j] = '\0';
    //scanf("%s",string2);
    
    i=0;j=0;
    while(string1[i] != '\0')
    {
        if(string1[i]!=string2[j])
        {
            i++; //don't match, test next position of string1
        }else{ //match, test next position of string2
            while(string2[j] != '\0')
            {
                if(string2[j]==string1[i]) //match, next position of string1
                {
                    i++;j++;k=i;
                }else{ //don't match, jump out of inner loop
                    k=0;break;
                }
            }
            break;
        }
    }
    
    if(k!=0)
    {
        printf("The sring2 is in the %d postion(start from 0) of string1.\n", k-j);
    }else{
        printf("String2 is not in string1.\n");
    }
    
    system("PAUSE");
    return 0;
}
My Blog: matlab, ubuntu, python
http://goo.gl/GDIO
lingyunxs
帖子: 105
注册时间: 2007-04-21 11:57
送出感谢: 0
接收感谢: 0
联系:

Re: 诸位高手帮我我看看这个c小程序问题出在哪 源代码如下 运行时没有结果 程序功能是 从字符串string1中提取字符串st

#4

帖子 lingyunxs » 2009-04-02 0:36

代码: 全选

#include <stdlib.h>
#include <stdio.h>

int main()
{
	char str1[]="adsownifowwe";
	char str2[]="ow";

	char *p, *q;
	p = str1;
	q = str2;
	int k = 0;

	while (*p)
	{
		if (*p != *q)
			q = str2;
		
		if (*p == *q)
		{
			q++;
			if (*q == '\0')
			{
				printf("string1 has string2 at %d \n", p-&str1[0]-strlen(str2)+1);
				k++;
				q = str2;
			}
		}
		p++;
	}

	if (k == 0)
		if(k=0)printf("string1 doesn't have string2"};
	else
		printf("string1 have string2  %d\n", k);
	return 0;
}
回复

回到 “软件/网站开发”