Я имею дело с этой проблемой: я создаю связанный список (используя структуру) и хочу загрузить ввод от пользователя. Когда я отлаживаю этот код, отладчик останавливается на строке scanf.
typedef struct Person{
char name[64];
int number;
} Person;
Person* record = malloc(sizeof(Person));
printf("Input name: \n");
scanf("%63s", record->name);
Я знаю, что (*record).number == record->number и '&' используется для получения адреса переменной, но я понятия не имею, как решить мою проблему самым простым способом, если я хочу использовать scanf для загрузки ввода .
Заранее спасибо.
1 ответ
Когда программа отлаживается с помощью gdb и встречается оператор scanf, отладчик запрашивает ввод данных пользователем. Если вы введете ввод в этот момент и нажмете Enter, выполнение продолжится.
Например, 1. Если исходный код указан в имени файла «llist.c»
#include <stdio.h>
#include <stdlib.h>
typedef struct Person{
char name[64];
int number;
} Person;
int main()
{
Person* record = malloc(sizeof(Person));
if(record == NULL)
{
printf("Memory allocation failed\n");
return;
}
printf("Input name: \n");
scanf("%63s", record->name);
printf("Name %s\n", record -> name);
return 0;
}
Скомпилируйте его, используя опцию отладки как
gcc -g -o список llist.c
- Запустите отладчик как
gdb ./list
и введите командуrun
, чтобы начать выполнение программы. - При появлении запроса на ввод введите любую строку и нажмите Enter.
- Затем строка выводится на терминал.
Похожие вопросы
Новые вопросы
c
C - это язык программирования общего назначения, используемый для системного программирования (ОС и встраиваемых), библиотек, игр и кроссплатформенности. Этот тег следует использовать с общими вопросами, касающимися языка C, как это определено в стандарте ISO 9899 (последняя версия 9899: 2018, если не указано иное, а также для запросов, специфичных для версии, с c89, c99, c11 и т. Д.). C отличается от C ++ и не должен сочетаться с тэгом C ++ без разумной причины.