C
Gast1 schrieb:
#include <stdio.h>
void *memchr(const char *String, int Character, int len)
{
void *Pointer = NULL;
int i;
for(i = 0;i < len;++i)
{
if(*(String+i) == Character)
{
Pointer = String+i; /* [Warning] assignment discards qualifiers from pointer target type */
break;
}
}
return Pointer;
}
int main()
{
char String[] = "Test";
printf("%c = %p\n",String[2],&String[2]);
char *Pointer = memchr(String,String[2],3);
printf("%c = %p\n",*Pointer,Pointer);
getchar();
}
Ich hab versucht die memchr Funktion zu programmieren, dies funktioniert auch gut, nur bekomme ich in der auskommentieren Zeile immer ein Warning, weiß allerdings nicht warum. Kann mir Jemand sagen, was ich an der Stelle nicht ganz richtig mache?
Die Funktion funktioniert, soweit ich das sagen kann, normal und der Compiler ist MinGW.
Danke
'qualifier' meint const oder volatile. mit void* hat das nichts zu tun, in C kann man jeden pointer implizit zu und von void* casten. in der zuweisung geht aber die constness von *String verloren. man kann den void pointer ja (nach zusätzlichem casten) dazu verwenden, um *String zu verändern. das ganze wäre entweder zu heilen indem pointer und memchr(..) jeweils const void* sind oder man verzichtet auf die constness von *String.