私のプログラムでは、ポインタ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;
どちらかこれはエラーではないことを知っておくことが重要ですが、それは警告だ - 全く異なっているそのうちの2つが。そして警告の理由は、 '' const char''ではなく '' char''として 'p1'と' p2'を宣言したからです。 –
警告が表示されますが、エラーは表示されません。 –
私はそのメッセージが明らかだと思います。一方の側にconstポインティーがあり、他方にconst以外のものがあります。あなたは修飾子を捨てます。 – StoryTeller