程序檢查第二個字符串是否是第一個字符串的子字符串。它爲所有情況顯示「是」,而且,當我將第二個字符串作爲'q ** q'時,我得到一個運行時錯誤,爲什麼它是這樣的? *代表任何信件。程序檢查子字符串。有什麼問題
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
char str1[20], str2[20];
int l1, l2, i1, i2=0;
gets(str1);
gets(str2);
l1=strlen(str1);
l2=strlen(str2);
if(l1>=l2)
{
for(i1=0; i1<=l1-l2+i2, i2<l2; i1++)
{
if(str2[i2]==str1[i1])
i2++;
}
if(i2==l2)
printf("Yes");
else
printf("No");
}
else
printf("No");
getch();
return 0;
}
是您的代碼縮進真的這樣?首先修復它,它會更具可讀性。 – 2012-02-17 18:35:22
你可以在'string.h'中使用函數'char * strstr(const char * s1,const char * s2)'define [link](http://www.edcc.edu/faculty/paul.bladek/c_string_functions熱媒)。或者你正試圖達到這個目的以學習和練習C? – 2012-02-17 18:36:43
要找到這樣的錯誤,你應該使用一個調試器,並查看錯誤發生的位置,此外,儘量不要使用變量與l和1,它看起來是相同的,它很混亂。我建議你閱讀「完整的代碼」,這是一本很好的書,它將爲你提供代碼可讀性的最佳實踐 – stdcall 2012-02-17 19:03:14