Ошибка при передаче строки (списки и динамическая память) - C (СИ)
Формулировка задачи:
задача кода принять из файла имена и если они начинаются на A вывести на экран, написал пока без файла, столкнулся с проблемой, int выводит без проблем, а вот при char - выводит (NULL), где то в функции create() при присвоении косяк, а вот почему
#define SIZE_NAME 100 typedef struct person { char personName[SIZE_NAME]; struct person *next; }Person; typedef struct p_person { Person *head; }p_Person; void init(p_Person *pList) { pList->head = NULL; } Person *create(char* s) { Person *tmp = NULL; tmp = (Person*)malloc(sizeof(Person)); if (tmp) { tmp->personName[SIZE_NAME] = s; tmp->next = NULL; } return tmp; } void addTolist(p_Person *pList, char* s) { if (pList->head == NULL ) { pList->head = create(s); if (pList->head == NULL) { exit(1); } } else { Person *tmp = create(s); if (tmp) { tmp->next = pList->head; pList->head = tmp; } } } void printPlist(p_Person *pList) { Person *tmp = pList->head; for (tmp; tmp; tmp = tmp->next) { printf("%s\n", tmp->personName[SIZE_NAME]); } } void main() { char s[SIZE_NAME] = "hfhf"; p_Person pList; init(&pList); addTolist(&pList,s); printPlist(&pList); }
Решение задачи: «Ошибка при передаче строки (списки и динамическая память)»
textual
Листинг программы
printf("%s\n", tmp->personName);
Объяснение кода листинга программы
- В данном коде используется функция printf для вывода информации на экран.
- Форматирование вывода осуществляется с помощью символа %s, который указывает на то, что нужно вывести строку.
- В качестве строки используется переменная tmp->personName.
- Значение переменной tmp->personName будет выведено на экран.
- Переменная tmp является указателем на структуру, которая содержит информацию о человеке.
- personName является полем структуры, которое содержит имя человека.
- Значение поля personName будет выведено на экран.
- Ошибка возникает при передаче строки, возможно, из-за неправильного использования памяти или нарушения правил работы со строками.
- Для решения проблемы необходимо проверить правильность работы с памятью и строками в данном коде.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д