重複の可能性:
strstr の逆 fn() はありますか
2 つの文字列を取得し、最初の文字列内に 2 番目の文字列が存在するかどうかを確認し、最も右のインデックスの出現場所を返すこの main 関数と関数を作成しました。見つからなかった場合は return -1
.
これは私が書いたコードです:
#include <stdio.h>
int strindex(char[], char[]);
int main()
{
char a[100];
char b[100];
int search;
printf("Enter two strings, To search the second one in the first one:\n");
printf("Enter the first string to search in:\n");
fgets(a,100,stdin);
printf("Enter the second string to search in the first:\n");
fgets(b,100,stdin);
printf("\n\n THE FIRST STRING IS:%s\n\n THE SEARCH STRING IS:%s",a, b);
printf("\n\n");
search = strindex(a, b);
if(search==-1)
printf("The second String didnt found in the first string\n");
else printf("The second string appear in the first string at most right at index:%d\n",search);
return 0;
}
int strindex(char s[], char t[])
{
int foundIndex = -1;
int tempFound, startNext;
int i,j;
i = j = 0;
while (s[i]!='\0')
{
if(s[i]==t[j])
{
startNext = i+1;
tempFound = i;
while(s[i]!='\0' && t[j]!='\0' && s[i]==t[j])
i++,j++;
if (t[j]=='\0') /**check if it null**/
{
printf("found match");
foundIndex = tempFound;
}
i = startNext;
j = 0;
}
else i++;
}
return foundIndex;
}
この行に問題があると思います:
if (t[j]=='\0') /**check if it null**/
2番目の文字列に含まれる2つの文字列を最初の文字列に入れてみましたが、t[j]
nullに等しいにもかかわらず、内部のifステートメントを実行しません。
- このプログラムを書くには他にも多くの方法があることを知っています。しかし、これも機能するはずであり、機能させようとしています。