一个函数越界的问题
写了一道练习程序,大体思路是按照《C和指针》程序的6.2写的。如果find_char(q,'a')函数传入的是已有的数值,比如本例,则程序能够正常执行,否则不能,比如find_char(q,'w')。该程序编译能够通过,我找了半天也不知道哪里出错了。后来一步一步的跟踪,说是
- C/C++ code
while((string=*strings++)!=NULL)
请诸位大神多多指教。
- C/C++ code
#include <stdio.h>#include <stdlib.h>#define TRUE 1#define FALSE 0int str_len(char* string);int find_char(char** strings,char value);/* * */int main(int argc, char** argv) { char* s1="a"; char* q[1]={"a"}; int flag=find_char(q,'w'); printf("value %s found\n",(flag ? "was" : "was not")); return (EXIT_SUCCESS);}int str_len(char* string){ int length=0; while(*string++!='\0') { ++length; } return length;}int find_char(char** strings,char value){ char* string; while((string=*strings++)!=NULL) { while(*string!='\0') { if(*string++==value) { return TRUE; } } } return FALSE;}[解决办法]
char* q[1]={"a"};
=>
char* q[2]={"a",NULL};
//对应这句: while((string=*strings++)!=NULL)
[解决办法]
char* q[1]={"a"};
这个没有结束符,所以你用结束符判断循环就出错
[解决办法]