我在C中有一个结构体,我使用一个函数从用户那里获取结构的值。下面是我的结构。
typedef struct {
char *name;
char *chemical_symbol;
char *class;
int atomic_number;
double atomic_weight;
int *electrons;
} element_t;这是我用来从用户那里获取值的函数。在请求化学符号之后,问题存在于此函数中。我得到总线错误: 10。我对总线错误的理解是当处理器不能尝试内存访问时。任何帮助都是非常感谢的。谢谢!
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);
}发布于 2012-11-19 01:36:42
printf("Element Name: ");
scanf("%s", element.name);例如,通过使用malloc,您必须为element.name指向的对象分配内存。如果没有正确的分配,element.name是无效的指针。
发布于 2012-11-19 01:36:59
您没有分配足够的内存来尝试读取您的字符串。
顺便说一句,你的上一个scanf很奇怪:你真的想问一个地址吗?这可能会很危险。
发布于 2012-11-19 01:43:14
你需要分配内存。也许是最好的(当然是最简单的!)方法是简单地将你的结构定义为有字符数组(而不是字符指针)。
示例:
#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;https://stackoverflow.com/questions/13442683
复制相似问题