Mein Programm muss feststellen, ob ein Zeiger s1 irgendwelche Zeichen von s2 enthält und dann einen Zeiger auf diese Position in s1 zurückgibt, andernfalls gebe NULL zurück.Probleme beim Verständnis dieses Const-Zeigerfehlers
#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;
}
Halten Sie diesen Fehler:
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;
Es ist wichtig zu wissen, dass dies kein Fehler ist, dann ist es eine Warnung - die von denen zwei ganz verschieden sind. Der Grund für die Warnung ist, dass Sie 'p1' und' p2' als 'char' deklariert haben, im Gegensatz zu' const char'. –
Ich sehe Warnungen, keine Fehler. –
Ich denke, die Nachricht ist offensichtlich. Sie haben auf der einen Seite einen konstanten und auf der anderen Seite eine nicht konstante. Du wirfst den Qualifier ab. – StoryTeller