分类：电脑/网络-程序设计-C/C++
问题：解释一下，谢谢/*判断一个字符串是否是另一个字符串的子串*/#i 
/*判断一个字符串是否是另一个字符串的子串*/#include <std.h>#define N 100void main(){  int i,j,k;  char s1[N],s2[N];  printf ("主字符串：");           /*主字符串为aababcabcdabcde*/  gets(s1);  printf("子字符串：");            /*  子字符串abcd*/  gets(s2);  for (i=0;s1[i];i++)  {    /*判断一个字符串是否是另一个字符串的子串*/#include <std.h>#define N 100void main(){  int i,j,k;  char s1[N],s2[N];  printf ("主字符串：");           /*主字符串为aababcabcdabcde*/  gets(s1);  printf("子字符串：");            /*  子字符串abcd*/  gets(s2);  for (i=0;s1[i];i++)  {    for (j=i,k=0;s1[j]&&s2[k]&&s1[j]==s2[k];j++,k++);         /*完全不懂*/    if (!s2[k])                                              /*s2[k] 是什么*/    {      printf("位置=%d\n",i);      return;    }  }  printf("未找到\n");}那2个循环条件是什么意思，那个if是什么意思
回答：条件s1[i]的意思：s1[i]=0(字符0）为假，s1[j]不等于0为真
第一个for的条件就是s1[i]不等于0,就是说字符串都没有结束，因为c的字符串以字符0结尾。
第二个for的条件的前半部分：
s1[j]&&s2[k]
意思是s1[j]不等于0且s2[k]不等于0，就是说两个字符串都没有结束，
s1[j]&&s2[k]&&s1[j]==s2[k]就是
两个字符串都没有结束 且 j和k位置的字符相等。
if (!s2[k])就是s2[k]等于0，表示字符串s2结束了。