我的程序需要确定一个指针s1是否有来自s2的任何字符,然后返回一个指向s1中该位置的指针,否则返回NULL。无法理解这个const指针错误
#include <stdio.h>
char * strpbrk(const char *, const char *);
int main(void){
const char *s1 = "hello";
const char *s2 = "world";
printf("Repeated character in s1 is %p", *strpbrk(s1, s2));
}
char * strpbrk(const char * s1, const char * s2){
char *p1, *p2;
p1 = s1;
p2 = s2;
for(; *p1 != '\0'; p1++){
for(; *p2 != '\0'; p2++){
if(*p1 == *p2){
break;
}
else{
return '\0';
}
}
}
return p1;
}
请收到此错误:
test.c: In function ‘strpbrk’:
test.c:16:5: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
p1 = s1;
^
test.c:17:5: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
p2 = s2;
知道这是不是一个错误是很重要的,这是一个警告 - 这两者有很大的不同。警告的原因是因为你将'p1'和'p2'声明为'char'而不是'const char'。 –
我看到警告,而不是错误。 –
我认为这个消息很明显。你在一边有一个const指针,而在另一边有一个非const对象。你放弃了质量。 – StoryTeller