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

一路题目

2013-11-03 
一道题目#define NULL (void *)0//我这里是不是有错误?char *find_char(char const *source,char const *c

一道题目

#define NULL (void *)0//我这里是不是有错误?
char *find_char(char const *source,char const *chars)
{
if(source==NULL||chars==NULL||
*source=='\0'||*chars=='\0')
return NULL;
while(*chars!='\0')
{
while(*source!='\0')
if(*chars==*source)
return source;//12行就是这一行
else
source++;
chars++;
}
return NULL;
}

gcc编译时显示如下错误:
61.c:12:5: 警告: return discards ‘const’ qualifier from pointer target type [默认启用]
运行程序时显示:
段错误 (核心已转储)
当然最主要的文件就是上述内容,错误肯定在这里面
[解决办法]
函数原型是返回char*, 而source是const char*
从const char* 强制转换成char*
当然要警告老,const的意义就是让编译器帮你检查,防止误操作修改了变量的值
[解决办法]
算法是错滴。不过,就单从你的代码来看,应该这样写:


char *find_char(char const *source,char const *chars)
{
    if(source==NULL
[解决办法]
chars==NULL
[解决办法]

    *source=='\0'
[解决办法]
*chars=='\0')
        return NULL;

    while(*chars!='\0')
    {
char* s = source;
        while(*s!='\0')
            if(*chars==*s)
                return s;//12行就是这一行
            else
                s++;
        chars++;
    }
    return NULL;
}

热点排行