Ошибка при передаче строки (списки и динамическая память) - 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 будет выведено на экран.
- Ошибка возникает при передаче строки, возможно, из-за неправильного использования памяти или нарушения правил работы со строками.
- Для решения проблемы необходимо проверить правильность работы с памятью и строками в данном коде.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д