scanf加载结构的问题 - >炭[]

时间:2011-04-13 11:48:17

标签: c arrays struct char scanf

我正在处理这个问题: 我一直在创建链表(使用结构),我想从用户加载输入。 当我调试此代码时,调试器停在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加载输入,我不知道如何以最简单的方式解决我的问题。

提前致谢。

1 个答案:

答案 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

  1. gdb ./list运行调试器并输入命令run以启动程序执行。
  2. 提示输入时,输入任意字符串并按Enter键。
  3. 然后将字符串打印到终端。