我不确定这是错误的,它表示不兼容的隐式内置函数 好吧,我确实包含了string.h文件,但它仍然给我一个错误
int name_read;
int name_bytes = 100;
char *name;
printf("Please enter name:\n");
name = (char *)malloc(name_bytes + 1);
name_read = getline(&name, &name_bytes, stdin);
答案 0 :(得分:8)
您需要#include <stdlib.h>
才能获得malloc
的正确声明。
同样sizeof(name_bytes) + 1
看起来很腥;这将为您提供5个字节的内存,而不是您预期的101。
最后,不需要在C中转换malloc
的返回值,因为它返回void*
。
#include <stdlib.h>
/* ... */
int name_bytes = 100;
char* name = malloc(name_bytes + 1);
答案 1 :(得分:0)
要修复错误,请确保已包含stdlib.h。此外,您应该注意sizeof返回变量/类型的大小,而不是赋给变量的值。所以你的sizeof(name_bytes)将返回一个整数的大小,以字节为单位,而不是100
答案 2 :(得分:0)
我认为你实际上需要name = malloc(name_bytes + 1);
(假设你想为名字分配101个字节)