Если я поместил «&» в printf, он по крайней мере напечатает имена стран, и он потерпит крах. В противном случае он немедленно сработает. Я предполагаю, что что-то не так с циклом for. Дай мне знать, если я ошибаюсь.Почему я не могу отображать строки со следующим кодом?
//Implementation file//
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct list
{
char *item;
int length;
};
typedef struct list LIST; //aliasing the structure//
LIST *create() //constrcutor//
{
LIST *L = (LIST*)malloc(sizeof (LIST));
L->length=0;
return L;
}
void insert(LIST* L, char *newitem)
{
L->item=(char*)malloc(sizeof(char));
strcpy(L->item, newitem);
(L->length)++;
}
void display(LIST *L)
{
int i;
for(i=0;i<(L->length);i++)
{
printf("Elements are: %s\n", L->item[i]);
}
}
int main()
{
LIST *L;
L=create();
insert(L, "America");
insert(L, "Brazil");
display(L);
free(L->item);
free(L);
return 0;
}
Ваш код списка полностью сломан. В 'insert' вы выделяете пространство только для одного символа, когда вы должны выделять достаточно для длины' newitem'. Кроме того, при каждом вызове 'insert' вы перезаписываете головку списка (потерять предыдущие элементы) вместо фактического добавления. В 'display' вы пытаетесь напечатать каждый элемент путем индексирования массива в строку в элементе head, что просто не имеет смысла. –