Ich bin relativ neu in C und ich erstellte ein Programm, das eine verknüpfte Liste enthält. Hier ist eine sehr abgekürzte Version des Codes, der mir Probleme bereitet.C: Variable ist für verknüpfte Liste nicht initialisiert
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define STRLEN 100
struct Gene {
int num[4];
struct Gene *next;
};
typedef struct Gene item;
void build_list(item *current, item *head, FILE *in);
int main() {
FILE *input;
FILE *output;
input = fopen("test.data", "r");
output = fopen("test.out", "w+");
item *curr;
item *head;
head = NULL;
int i;
build_list(curr, head, input);
curr = head;
while(curr) {
for (i = 0; i < 4; ++i)
fprintf(output, "%d\n", curr->num[i]);
curr = curr->next;
}
fclose(input);
fclose(output);
free(curr);
}
void build_list(item *current, item *head, FILE *in) {
char gene[STRLEN];
char *tok;
char gene_name[STRLEN];
char *search = ",";
int j;
while (fgets(gene, sizeof(gene), in)) {
current = (item *)malloc(sizeof(item));
tok = strtok(gene, search);
strcpy(gene_name, tok);
for (j = 0; j < 4; ++j) {
tok = strtok(NULL, search);
current->num[j] = atoi(tok);
}
current->next = head;
head = current;
}
}
Wenn ich versuche, dies zu kompilieren, heißt es variable curr
nicht initialisiert ist, aber selbst wenn ich es mit malloc
initialisieren wirft es einen Segmentation Fault, oder er druckt gar nichts aus. Warum könnte das sein?
Sie wissen, dass 'build_list (curr, head, input)' einen nicht initialisierten Wert als ersten Parameter übergibt? – immibis
'curr' und' head' werden nach Wert übergeben. –
Ja, wie konnte ich das umgehen? – matnnar