【发布时间】:2018-12-10 16:36:41
【问题描述】:
我正在学习 C。我编写了代码并且错误是“传递 'strcpy' 的参数 1 使指针从整数而不进行强制转换”。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct humans{
sname[20];
}human;
int main(){
human *person=(human *)malloc(sizeof(human)*1);
int i,k,z;
for(i=0;i<5;i++){
person=(human *)realloc(person,sizeof(human)*(i+1));
strcpy(*person[i].sname , "john");
}
for(i=0;i<5;i++){
printf("%s",*person[i].sname);
}
return 0;
}
我想使用 malloc/realloc。
【问题讨论】:
-
#include <stdlib.h>在代码的开头。 -
您继续重新分配一行,但访问超出分配的行。新大小是新的 total 大小,而不是要添加的数量。
-
@JonathanLeffler 已修复(已编辑)并已编译但屏幕为空
-
Person 已经是一个指针,所以你正试图 strcpy 一个指向指针的指针。尝试使用 strcpy(person[i].sname , "John");并打印 printf("%s",person[i].sname);
-
@TJGreen 谢谢!它的工作:)
标签: c