问题描述
- 写了这样一个函数,为什么第一个循环中for语句会失效?
-
求教:第一条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即可。
解决方案五:
还是要养成良好的习惯,内置类型的变量,记得在定义的时候进行初始化,否则程序难免会出现一些不容易发现的小问题,习惯真的很重要的
时间: 2025-01-27 01:08:32