user-0 提问: 求大佬解题，代码运行无数据

回复:
user: user-1
content: #include<stdio.h> #include<string.h>  int main(int argc, char **argv) {     char s[100] = { "This is C programming text" };     char t[100] = { "This is a text for C programming" };      int i = 0;     int j = 0;     int count = 0;     int start_count = 0;     int max = 0;      for (i= 0; i <= strlen(s) ; i++)     {         for(j = 0; j <= strlen(t); j++)// 字符串s中单个字符与字符串t中所有字符比较         {             if ((s[i] == t[j]) && (t[j] != ' ') && (i != strlen(s)))// 判断相同字符             {                 count++;// 单词长度计数                 i++;// 单词逐个字母比较移位             }             else             {                 i = count > 0 ? i - count: i;// 将i恢复循环计数                 if (count > max)// 判断是否位最长相同单词                 {                     max = count;// 保存单词长度                     start_count = j -max;// 相同单词在字符串的开始位                 }                 count = 0; // 清空单词长度             }         }     }      // 打印信息     for (i = 0; i < max; i++)     {         printf("%c", t[start_count + i]);     }     printf("\n");     return 0; }

user: user-1
content: #include<stdio.h> #include<string.h>  int main(int argc, char **argv) {     char s[100] = { "This is C programming text" };     char t[100] = { "This is a text for C programming" };      int i = 0;     int j = 0;     int count = 0;     int start_count = 0;     int max = 0;      for (i= 0; i <= strlen(s) ; i++)     {         for(j = 0; j <= strlen(t); j++)// 字符串s中单个字符与字符串t中所有字符比较         {             if ((s[i] == t[j]) && (t[j] != ' ') && (i != strlen(s)))// 判断相同字符             {                 count++;// 单词长度计数                 i++;// 单词逐个字母比较移位             }             else             {                 i = count > 0 ? i - count: i;// 将i恢复循环计数                 if (count > max)// 判断是否位最长相同单词                 {                     max = count;// 保存单词长度                     start_count = j -max;// 相同单词在字符串的开始位                 }                 count = 0; // 清空单词长度             }         }     }      // 打印信息     for (i = 0; i < max; i++)     {         printf("%c", t[start_count + i]);     }     printf("\n");     return 0; }

user: user-2
content: if (s[i] == t[j])        {            count++;            i++;            j++;     if (s[i] == ' ')       {             k = count;              count = 0;              a = i-1;        }   }  在i与j等于8时因为C与a不相等，就无法跳入if里面，那么i，j就不会改变数值了，就会进入死循环

user: user-2
content: if (s[i] == t[j])        {            count++;            i++;            j++;         if (s[i] == ' ')         {              k = count;               count = 0;               a = i-1;         }     }  这里。。你应该把i，j++给移出来，不然会进入死循环，无法结束，自然就没法打印了

user: user-0
content: i，和j移到哪里呢？

user: user-0
content: 我移了以后，结果并不对

user: user-2
content: 我也不知道，我移出来，只能得到ming相等，但不是完整单词，我觉得应该不符合你的结果

user: user-3
content: char str[100] = {0};   //初始化一个字符串数组，长度为1，里面有一个字符char(0)     for (i = 0; i <= max; i++)         str[i] = s[a - max + 1 + i];    //字符串数组的长度能否更改？     str[i] = '\0';     printf("%s", str);     return 0;

user: user-1
content: #include&lt;stdio.h&gt; #include&lt;string.h&gt;  int main(void *arg) { 	char s[100] = { "This is C programming text" }; 	char t[100] = { "This is a text for C programming" }; 	int i = 0; 	int j = 0; 	int count = 0; 	int start_count = 0; 	int max = 0; 	int k = 0; 	while ((s[i] != '\0') && (t[j] != '\0')) 	{ 		if (s[i] == t[j]) 		{ 			if (s[i] == ' ') 			{ 				k = count; 				count = 0; 			} 			else 			{ 				count++; 			} 		} 		if (k &gt; max) 		{ 			max = k; 			start_count = i - k;// 相同单词在字符串的开始位 		} 		i++; 		j++; 	}  	char str[100] = {0}; 	for (i = 0; i &lt; max; i++) 	{ 		str[i] = s[start_count + i]; 	} 	str[max] = '\0'; 	printf("%s \n", str); 	return 0;		 } // 改成这样应该就可以了，主要是逻辑感觉有点问题。

user: user-0
content: 还是不对运行结果是This

user: user-1
content: #include&lt;stdio.h&gt; #include&lt;string.h&gt;  int main(void *arg) { 	char s[100] = { "This is C programming text" }; 	char t[100] = { "This is a text for C programming" }; 	 	int i = 0; 	int j = 0; 	int count = 0; 	int start_count = 0; 	int max = 0;  	for (i= 0; i &lt;= strlen(s) ; i++) 	{ 		for(j = 0; j &lt;= strlen(t); j++)// 字符串s中单个字符与字符串t中所有字符比较 		{ 			if ((s[i] == t[j]) && (t[j] != ' ') && (i != strlen(s)))// 判断相同字符 			{ 				count++;// 单词长度计数 				i++;// 单词逐个字母比较移位 			} 			else  			{ 				i = count &gt; 0 ? i - count: i;// 将i恢复循环计数	 				if (count &gt; max)// 判断是否位最长相同单词	 				{ 					max = count;// 保存单词长度 					start_count = j -max;// 相同单词在字符串的开始位 				} 				count = 0; // 清空单词长度 			} 		}	 	} 	 	// 打印信息 	for (i = 0; i &lt; max; i++) 	{ 		printf("%c", t[start_count + i]); 	} 	printf("\n"); 	return 0;		 } // 再试试这个