程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c語言-菜鳥求教,為什麼會顯示找不到,感激不盡

c語言-菜鳥求教,為什麼會顯示找不到,感激不盡

編輯:編程解疑
菜鳥求教,為什麼會顯示找不到,感激不盡

#include
#include
#include
char *mystrstr(char *string,char *findstring )
{
if (string == NULL || findstring == NULL)
{
return NULL;
}
int flag = 1;
while (*string != '\0')
{
char *p=string;
char *px = string;
char *now = findstring;
while (*now != '\0')
{
if (*px == *now)
{
px++;
now++;
}
else
{
flag = 0;
break;
}
}

if (flag == 1)
{
return p;
}
string++;
}
if (flag == 0)
{
return NULL;
}
}
void main()
{
char str1[20] = "i love you";
char str2[20] = "love";
char *p=mystrstr(str1, str2);
if (p == NULL)
{
printf("沒有找到\n");
}
else
{
printf("%c\n", *p);
}

system("pause");

}

最佳回答:


改成了如下這樣:

 #include <stdio.h>
#include <iostream>
using namespace std;

char *mystrstr(char *string,char *findstring )
{
    if (string == NULL || findstring == NULL)
    {
        return NULL;
    }
    int flag = 1;
    while (*string != '\0')
    {
        char *p=string;
        char *px = string;
        char *now = findstring;
        while (*now != '\0')
        {
            if (*px == *now)
            {
                px++;
                now++;
            }
            else
            {
                flag = 0;
                break;
            }

            if(*now != '\0')
                flag = 1;
        }

        if (flag == 1)
        {
            return p;
        }
        string++;
    }
    if (flag == 0)
    {
        return NULL;
    }
}
void main()
{
    char str1[20] = "i love you";
    char str2[20] = "love";
    char *p=mystrstr(str1, str2);
    if (p == NULL)
    {
        printf("沒有找到\n");
    }
    else
    {
        printf("%c\n", *p);
    }
    system("pause");
}

就多加了一下兩句:
if(*now != '\0')
flag = 1;
while (*string != '\0')否則的話即使在某個位置兩個字符串都匹配上了,但是沒有把flag置1,無法跳出循環,
繼續進行while (*string != '\0')裡的循環,然後由於字符匹配不上,flag被置成0了

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved