realloc

22/11/2008 - 13:44 von Herbert Müller | Report spam
Irgendwo hàngt es bei mir, ich versuche eine Zeile dynamisch einzulesen, was
bedeutet, bei der Einlesung der Zeile muss der Speicher für die Zeile unter
Umstànden wachsen:

Code-Schnippsel:
char buffer [20] = {0};
i=0;
int i_max=sizeof(buffer);
while(p0=fgetc(input),!feof(input)) {
buffer[i++]=p0;
if (i==i_max) {
buffer=realloc(buffer,i_max+10); /1/
printf("neu Buffergröße: %i",sizeof(buffer));
i_max+;
if (buffer==NULL){
printf("Fehler !!!");
}
}
if (buffer[i]=='') {
buffer[++i]='\0';
fprintf(output,"%s",buffer);
i=0;
}
}

bei /1/ streikt der Compiler mit
'inkompatible Typen in Zuweisung'

any hints

mfg Herbert
 

Lesen sie die antworten

#1 Alexander Bartolich
22/11/2008 - 14:05 | Warnen spam
Herbert Müller schrieb:
Irgendwo hàngt es bei mir, ich versuche eine Zeile dynamisch einzulesen, was
bedeutet, bei der Einlesung der Zeile muss der Speicher für die Zeile unter
Umstànden wachsen:


[...]
char buffer [20] = {0};



char* buffer = malloc(20);
if (buffer == 0) {/* fehler_kein_speicher */ }

[...]
buffer=realloc(buffer,i_max+10); /1/



Der erste Parameter von realloc muss
a) ein Nullzeiger sein
b) oder ein früheres Ergebnis von realloc
c) oder ein früheres Ergebnis man malloc

usingwhitespaceisracism

Ähnliche fragen