Проблема со структурой загрузки scanf -> char [] - PullRequest
1 голос
/ 13 апреля 2011

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

1 голос
/ 13 апреля 2011

Когда программа отлаживается с помощью 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 list llist.c

  1. Запустите отладчик как gdb ./list и введите команду run, чтобы начать выполнение программы.
  2. При появлении запроса на ввод введите любую строку и нажмите Enter.
  3. Затем строка выводится на терминал.
...