读书人

一路题目

发布时间: 2013-11-03 15:39:14 作者: rapoo

一道题目

#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;
}

读书人网 >C语言

热点推荐