0
나는 프로그램을 작성했습니다. 텍스트 파일의 데이터를 단어별로 연결된 목록 단어로 가져옵니다. 그러나 단어를 나열하는 데 문제가 있습니다. '남자 strtok를'에서링크 된 목록 나열
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct list
{
char *data;
struct list *next;
} node;
int main()
{
int i;
char *word = NULL;
char line[1000];
node *root,*temp;
root = (node *) malloc(sizeof(node));
temp = root;
FILE *f = fopen("test.txt","r");
while (fgets(line, sizeof(line), f))
for (word = strtok(line, " "); word; word = strtok(NULL, " "))
{
temp->data = word;
temp->next=(node *) malloc(sizeof(node));
temp=temp->next;
}
fclose(f);
temp =root;
for(i=0; i<10; i++)
{
printf("%s\n",temp->data);
temp=temp->next;
}
return 0;
}
도움이 필요하면 문제의 진위를 밝혀야합니다. 그러나 그것이 나라면 필자는 목록의 구문 분석 및 작성이 올바른지 확인하려고했습니다. 목록보다 문제가 될 것으로 보인다. –
그는 각 줄마다 줄 배열을 다시 사용하고있는 것처럼 보입니다. 그래서 그는 다른 모든 것이 올바르게 작동한다면 마지막 줄에서 그의 말을 보게됩니다. –
"for (i = 0; i <10; i ++)"로 인해 10 단어 만 표시되며 대신 "while (temp)"여야합니다. 이를 위해 목록은 널로 종료되어야합니다. 따라서 기본 루프에 "temp-> next-> next = 0;"을 추가하십시오. malloc 직후. –