首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C结构总线错误10

C结构总线错误10
EN

Stack Overflow用户
提问于 2012-11-19 01:35:38
回答 4查看 1K关注 0票数 0

我在C中有一个结构体,我使用一个函数从用户那里获取结构的值。下面是我的结构。

代码语言:javascript
复制
typedef struct {
    char    *name;
    char    *chemical_symbol;
    char    *class;
    int     atomic_number;
    double  atomic_weight;
    int     *electrons;
} element_t;

这是我用来从用户那里获取值的函数。在请求化学符号之后,问题存在于此函数中。我得到总线错误: 10。我对总线错误的理解是当处理器不能尝试内存访问时。任何帮助都是非常感谢的。谢谢!

代码语言:javascript
复制
element_t scan_element() {

    element_t element;

    printf ("Enter New Element Information:\n\n");

    printf("Element Name: ");
    scanf("%s", element.name);

    printf("Element Chemical Symbol: ");
    scanf("%s", element.chemical_symbol);

    printf("Element Class: ");
    scanf("%s", element.class);

    printf("Element Atomic Number: ");
    scanf("%d", &element.atomic_number);

    printf("Element Atomic Weight: ");
    scanf("%lf", &element.atmoic_weight);

    printf("Element Electrons: ");
    scanf("%p", &element.electrons);

    return(element);
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-19 01:36:42

代码语言:javascript
复制
printf("Element Name: ");
scanf("%s", element.name);

例如,通过使用malloc,您必须为element.name指向的对象分配内存。如果没有正确的分配,element.name是无效的指针。

票数 4
EN

Stack Overflow用户

发布于 2012-11-19 01:36:59

您没有分配足够的内存来尝试读取您的字符串。

顺便说一句,你的上一个scanf很奇怪:你真的想问一个地址吗?这可能会很危险。

票数 2
EN

Stack Overflow用户

发布于 2012-11-19 01:43:14

你需要分配内存。也许是最好的(当然是最简单的!)方法是简单地将你的结构定义为有字符数组(而不是字符指针)。

示例:

代码语言:javascript
复制
#define MAX_STRING 80
#define MAX_ELECTRONS 32

typedef struct {
    char    name[MAX_STRING];
    char    chemical_symbol[MAX_STRING];
    char    class[MAX_STRING];
    int     atomic_number;
    double  atmoic_weight;
    int     electrons[MAX_ELECTRONS];
} element_t;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13442683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档