首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个函数越界的有关问题

2012-04-16 
一个函数越界的问题写了一道练习程序,大体思路是按照《C和指针》程序的6.2写的。如果find_char(q,a)函数传

一个函数越界的问题

写了一道练习程序,大体思路是按照《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"};

这个没有结束符,所以你用结束符判断循环就出错
[解决办法]
探讨
这里为什么要++?

C/C++ code
((string=*strings++)!=NULL)

是因为++出错吗?

热点排行