我正在处理这个问题:我一直在创建链表(使用结构),我想从用户加载输入。当我调试这段代码时,调试器在scanf.
一行停止。typedef struct Person{
char name[64];
int number;
} Person;
Person* record = malloc(sizeof(Person));
printf("Input name: n");
scanf("%63s", record->name);
我知道(*记录)。number == record->number和'&'用于获取变量的地址,但我不知道如何以最简单的方式解决我的问题,如果我想使用scanf加载输入。
当使用gdb调试程序并遇到scanf语句时,调试器将提示用户输入。如果你在那个点输入并按回车键,执行将继续。
例如。,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 failedn");
return;
}
printf("Input name: n");
scanf("%63s", record->name);
printf("Name %sn", record -> name);
return 0;
}
使用debug选项作为
编译它gcc -g -o list.c
- 以
gdb ./list
身份运行调试器,输入run
命令启动程序。 - 当提示输入时,输入任意字符串并按回车键。 然后将字符串打印到终端。