Я использую структуру как связанный список, но с недавнего изменения (я забыл проверить в git-репо, поэтому не помню , который меняет) одна из моей структуры переменные в элементе head меняются. При выполнении кода, показанного ниже, post-> filename получил допустимую строку, но после выхода из метода head_post-> filename (который должен указать на то же самое значение) имеет добавленный мусор. Строка «20130804-0638.md» станет «20130804-0638.md : \ 020».C связанный список: голова меняется
Любая идея, что я пропустил?
Struct:
struct posting {
char *filename;
char timestamp[17];
char *url;
char *title;
char *html;
struct posting *next;
};
struct posting *head_post = NULL;
Код:
struct posting *post;
...
while ((ep = readdir(dp))) {
if (ep->d_name[0] != '.' && strstr(ep->d_name, ".md") && strlen(ep->d_name) == 16) {
if (head_post == NULL) {
head_post = malloc(sizeof(struct posting));
post = head_post;
} else {
post = head_post;
while (post->next != NULL)
post = post->next;
post->next = malloc(sizeof(struct posting));
post = post->next;
}
post->filename = malloc(sizeof(char) * strlen(ep->d_name));
strcpy(post->filename, ep->d_name);
post->next = NULL;
}
}
Если вы загрузите последнюю версию из репо, вы сможете получить разницу двух файлов, которые будут выделять изменения. ... Если вы не забыли сделать это во многих изменениях. –