我正在处理这个问题: 我一直在创建链表(使用结构),我想从用户加载输入。 当我调试此代码时,调试器停在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->数字和'&'用于获取变量的地址,但如果我想使用scanf加载输入,我不知道如何以最简单的方式解决我的问题。
提前致谢。
答案 0 :(得分: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 list llist.c
gdb ./list
运行调试器并输入命令run
以启动程序执行。