0
모든 것을 잘 저장할 수 있습니다. 하지만 연결된 목록 내에서 배열을 구현할 때 문제가 발생합니다. baratok은 주어진 입력이 -1이 될 때까지 숫자 값을 보유합니다. 하지만 인쇄하려고하면 -1 만 준다. 그렇다면 이것에 대한 적절한 구현이 무엇일까요?C에서 연결된 목록 내에서 배열을 구현하는 방법
내 코드 :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int getl(char s[], int lim)
{
int c,i;
for(i = 0; i < lim && (c = getchar()) != '\n' && c!=EOF; i++)
s[i] = c;
s[i] = '\0';
while(c != '\n' && c!=EOF)
c=getchar();
return i;
}
struct szemelylista {
int szemelyId;
char nev[50];
int *baratok;
struct szemelylista *kov;
} ;
int main()
{
struct szemelylista *llist = NULL, *elozo, *horgony;
int ct = 0, barat, i;
char s[50];
horgony = elozo = NULL;
while(printf("Name: ") && getl(s, 50))
{
if(!(llist = (struct szemelylista*)malloc(sizeof(struct szemelylista)))) {
break;
}
if(horgony) {
elozo ->kov = llist;
} else {
horgony = llist;
}
elozo = llist;
llist -> kov = NULL;
llist->szemelyId = ct;
strcpy(llist->nev, s);
printf("Friends: "); //this is the problematic part I guess
getl(s, 50);
barat = atoi(s);
llist->baratok = barat;
while(barat != -1) {
getl(s, 50);
barat = atoi(s);
llist->baratok = barat; //until here
}
ct++;
}
llist = horgony;
printf("ID\Name\Friends\tFriends with text\n");
printf("--------------------------------------------\n");
while(llist) {
printf("\t%d\t%s\t%d\t\n", llist->szemelyId, llist->nev, llist->baratok);
llist = llist->kov;
}
}
감사합니다. 배열 하나가 작동했습니다. 그러나, 내가 그것을 인쇄 할 때 0 (나머지) (sizeof (llist-> baratok)/sizeof (llist-> baratok [0]) 채 웁니다. 어떻게 실제로 포함 된 숫자와 일치하도록 각 루프 내의 숫자를 인쇄 할 수 있습니다. ? –