我在试图为一个结构指针修改一些内存。代码编译得很好,但是当我运行它时,我会得到总线错误: 10在用户输入他们的名字之后。我不知道我做错了什么,所以我会感谢任何帮助!
(预先谢谢:)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(){
struct name{
char *first;
char *last;
};
struct name *user;
char temp[10];
printf("What is your first name?\n");
scanf("%s", temp);
user->first = (char*) malloc(strlen(temp)+1);
strcpy(user->first, temp);
printf("What is your last name?\n");
scanf("%s", temp);
user->last = (char*) malloc(strlen(temp)+1);
strcpy(user->last, temp);
printf("Your name is %s %s\n", user->first, user->last);
free(user->first);
free(user->last);
user->first = NULL;
user->last = NULL;
}发布于 2021-05-29 16:32:33
您没有为user分配要指向的内存。因此,它没有初始化,并试图取消引用该指针导致未定义行为。
您需要为user分配内存,就像为其字段分配内存一样:
struct name *user = malloc(sizeof *user);https://stackoverflow.com/questions/67753637
复制相似问题