求教:第一条for语句失效,这是为什么?
/*函数功能:找出一个字符中相同字符子串的最大长度,暂时还不知道对不对*/
int string_search(char a[])
{
int i,j;
int max_len; // 相同字符子串最大长度
int every_len; // 临时存储子串长度
int all_len; // 传进来的字符串总长度
max_len = 1;
all_len = strlen(a);
for(i = 0; i < all_len - 1; i+every_len) // 这里会产生警告信息,语句无作用
{
every_len = 1;
for(j = i+1; j < all_len; j++)
{
if(a[i] != a[j])
break;
every_len += 1;
}
if(max_len < every_len)
max_len = every_len;
}
return max_len;
}
for(i = 0; i < 2 - 1;i=i+every_len){} 并且every_len要初始化一个值
你最好对every_len进行初始化,有一些语言,不会自动初始化int类型,那样你定义的变量可能就是所分配内存中的值,而不是0
是 i=i+every__len。 你看看for 循环的定义吧,我觉得 你这里 用 i++ 就可以了
你在迭代语句i+every_len中并没有改变i的值。所以i永远都是初始值,根本无法构成循环。
写成i+=every_len即可。
还是要养成良好的习惯,内置类型的变量,记得在定义的时候进行初始化,否则程序难免会出现一些不容易发现的小问题,习惯真的很重要的