C - String-array dynamisch erweitern

OP #4712225
Lesenswert?
• ▲
▼
Hallo,
ich versuche gerade Strings aus einer Datei einzulesen und diese in ein 
String-Array zu schreiben. Dabei möchte ich nach jeder eingelesenen 
Zeile das Array um einen String erweitern.
Das Programm lässt sich auch kompilieren, ich bekomme aber nach dem 
Start einen Segmentation Fault.
Kann mir hier jemand Helfen?
lg
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <string.h>
4

5
int get_list();
6
void get_interprets();
7

8
char** interprets = 0;
9

10
int main()
11
{
12
  int songcount;
13

14
  songcount = get_list();
15
  //get_interprets();
16

17
  return 0;
18
}
19

20
int get_list()
21
{
22
  FILE *fp;
23
  char buf[255];
24
  int songcount = 0;
25

26
  fp = fopen("songlist.txt", "r");
27

28
  while(fgets(buf, 255, (FILE*)fp))
29
  {
30
    interprets = (char**) realloc(interprets, (songcount+1)*sizeof(char*));
31
    *interprets = (char*) malloc(255*sizeof(char));
32

33
    strcpy(interprets[songcount], buf);
34

35
    songcount++;
36
  }
37

38
  return songcount;
39
}
Gast #4712233
Lesenswert?
• ▲
▼
1
*interprets = (char*) malloc(255*sizeof(char));
2
 strcpy(interprets[songcount], buf);

ist falsch


müsste so sein:
1
 interprets[songcount] = (char*) malloc(255*sizeof(char));
2
 strcpy(interprets[songcount], buf);
1
while(fgets(buf, 255, (FILE*)fp))
wozu der cast?
OP #4712245
Lesenswert?
• ▲
▼
> ist falsch
> müsste so sein:
> interprets[songcount] = (char*) malloc(255*sizeof(char));
> strcpy(interprets[songcount], buf);
Oha.... Dummer Fehler :D Hätte ich selbst sehen sollen... Aber Danke!


> wozu der cast?
Hab die Zeile aus einem älteren Projekt kopiert weil ich mir nicht mehr 
sicher war (schon eine Zeit her dass ich C programmiert habe)... Hier 
ist er natürlich ohne Nutzen... Danke!

Vielen Danke, lg

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren