我想编写一个函数来读取某人的姓名和年龄,并编写一个函数,以将指针用作参数后显示给他们。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void read(char **name, int *age)
{
printf("name: ");
scanf("%s", *name);
printf("age: ");
scanf("%d", age);
}
void write(char *name, int age)
{
printf("%s, %d\n", name, age);
}
int main(void)
{
char *name;
int age;
read(&name, &age);
write(name, age);
free(name);
return 0;
}
运行此命令时,出现错误消息:Process terminated with status -1073741819 (0 minute(s), 2 second(s))
。是因为我没有为name
分配任何内存吗?你能解释一下我在做什么错吗?
答案 0 :(得分:2)
您没有分配Get-IscsitargetPortal
,这会导致您的应用程序崩溃,因为name
可能通过尝试在应用程序空间之外写入内存而导致访问冲突。
您将需要scanf
一些空间:
malloc
或在堆栈上分配一些空间(并在最后删除对char *name = (char*) malloc(sizeof(char) * 256);
的调用):
free(name)