card * load_rolodex(FILE *read_file)
{
int array_index = 0;
char line [LINE_MAX];
card *card_array = malloc(sizeof(card) * upper_bound);
while (fgets(line, LINE_MAX, read_file)!= NULL)
{
card_array[array_index].last_name = strtok(line, " ");
card_array[array_index].first_name = strtok(NULL, " ");
card_array[array_index].phone_number = strtok(NULL, " ");
size++;
array_index++;
}
return card_array;
}
각 토큰을 구조체 배열의 값에 저장하려고합니다.C : strtok가 이전 배열 값을 덮어 쓰시겠습니까?
0 프랫을 elyn 193 :
나는
LASTNAME의 FIRSTNAME 번호 LASTNAME FIRSTNAME 번호 등
내 출력은 다음과 같다 다음과 같은 형식의 파일에서 읽고 있어요) 760-4405
1 프랫 이블린
2 프랫
3 프랫 velyn 93 velyn (193)760-4405
4 프랫) 760-4405
5 프랫 (193)760-4405
6 프랫 elyn 3 velyn) 760-4405
등 ...
출력이 있어야
012 3,516,0 아코 나딘 (752)596-6540
1 앨 포드 스카 일러 (635)736-7827
2 앨리슨 로렌스 (475)886-5725
3 알바레즈 콜린 (659) 911- 6629
4 볼 캐드 먼 (328)898-9532
5 발라드 아벨 (853)190-0868
. ..
99 프랫 에블린 (193)760-4405
당신이 볼 수 있듯이, 프랫 에블린 (193)760-4405 내가 읽는 오전 파일의 마지막 라인,
나 ' C에 상당히 새롭고 어떤 것이 잘못되었는지에 대한 어떤 설명도 감사 할 것입니다!
'카드'의 정의가 보입니까? 문제는 문자열을 복사하는 대신 포인터를 할당한다는 것입니다. – mukunda
문자열을 복사하기 위해서는'strcpy()'를 사용해야합니다 (문자열을 복사 할 수있는 충분한 공간이 있는지 확인하십시오); 단순히 포인터를 할당 할 수는 없습니다. 또는'strdup()'를 사용하여 문자열을 복제 할 수 있습니다. 입력이 부정확하게 포맷되어 있기 때문에'strtok()'에서 NULL을 얻지 않았는지 확인해야한다. –
이 사람과 번호가 사실입니까? 그렇다면 여기에서 확실히 제거해야합니다. – alk