저는 C에서 비교적 새롭고 링크 된 목록이 포함 된 프로그램을 만들고있었습니다. 다음은 매우 간략화 된 코드 버전입니다. C : 링크 된 목록에 대해 변수가 초기화되지 않았습니다.
#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;
}
}
나는 이것을 컴파일하려고
, 그것은 변수curr
가 초기화되지 않은 말한다,하지만 난
malloc
로 초기화하더라도 그것은 세그먼트 오류를 던져, 또는 전혀 아무것도를 출력하지 않습니다. 왜 이럴 수 있니?
'build_list (curr, head, input)'이 초기화되지 않은 값을 첫 번째 매개 변수로 전달한다는 사실을 알고 계십니까? – immibis
'curr'과'head'가 값에 의해 전달됩니다 .... –
예, 어떻게이 문제를 해결할 수 있습니까? – matnnar