array&pointer weiss nicht weiter...
-
Es soll ein Array of Pointer mit max5Eintraegen und max 5Strings eingegeben werden und diese Strings sollen dann in umgekehrter Reihenfolge wieder ausgegeben werden.
Bei mir klappts nicht...kann mir jemand helfen?
Danke!So weit bin ich bisher: (naja ich glaub ist alles falsch...)
#include
#includeint main()
{
char line[1024];char *file_lines[5];
int anz_bytes;
int i;
i=0;char *str = malloc(100);
printf("Bitte geben Sie die Strings ein : \n");
fgets(str,100,stdin);do
{
fgets(line,1024,stdin);
anz_bytes = strlen(line);
file_lines[i] = (char *)malloc(anz_bytes);
strcpy(file_lines[i],line);
i++;
}while (i<4);for(i=0;i<4;i++)
{
puts(file_lines[i]);
}
for(i=3;i>=0;i--)
{
puts(file_lines[i]);
}return 0;
}
-
a) Bitte die
Tags benutzen.
b) Was klappt nicht? Den einzigen Fehler den ich jetzt spontan erkenne ist, dass du vergisst, den Speicher für die \0 mitzureservieren. Also:file_lines[i] = malloc( strlen(line) + 1 );
-
Vielen Dank fuer deine Hilfe
@a)sorry kenne mich hier noch nicht aus.Wie genau muss ich das benutzen?
@b)ich habe das so geaendert, ich gebe noch 5 Eingaben ein:
1
2
3
4
5
und raus bekomme ich:
2
3
4
5
5
4
3
2
Die 1 ist komplett weg. Wieso?Wie kann bekommt man die 1 auch hinzu?
-
a) Beim Schreiben eines Betrags einfach auf das weisse Kästchen "C/C++" unterhalb des Textfeldes klicken. Der Rest sollte dann klar sein
b) Deine erste Eingabe ist ja schon bei "fgets(str,100,stdin);". Diese wird später überhaupt nicht mehr verwendet
c) Solltest du den Speicher den du mit malloc() holst auch wieder freigeben -> free().
-
a)jep ist klar
b)also fgets verschluckt die 1 einfach?und ich bekomme die nie raus?...kann man das aendern, oder ergibts sich das dann durch free()?
c)wie gebe ich das frei? einfach file_lines[i] = (char *)free(anz_bytes)
schreiben?und wohin?
-
b)habe das Problem mit dem Verschwinden der 1 geloest das funktioniert
fgets war zu viel
c) das mit free habe ich zwar noch nicht(weil ichs noch nicht verstehe) aber das Programm funktioniert
-
free(file_lines[i]);
-
Danke!