我收到此错误消息:
error: incompatible types when assigning to type 'Nombre {aka struct <anonymous>}' from type 'int':
nombre[0] = 'A'+(rand()%26);
编码:
typedef struct{
char nombre[9];
}Nombre;
Nombre* crearNombre(){
Nombre *nombre;
nombre = (Nombre*)malloc(9* sizeof(char));
nombre[0] = 'A'+(rand()%26);
for (int i=1; i<9; ++i){
if(i == 9){
nombre[i] = '\0';
}
else nombre[i] = 'a'+(rand()%26);
}
return nombre;
}
这是什么意思,我该如何解决?
nombre
是指向结构的指针,结构也是Nombre
如此nombre[0]
,而不是整数。
您应该分配正确的大小并引用成员nombre
来访问元素。
另请注意,malloc()
家庭的铸造结果被认为是一种不好的做法。
#include <stdlib.h>
typedef struct{
char nombre[9];
}Nombre;
Nombre* crearNombre(){
Nombre *nombre;
nombre = malloc(sizeof(*nombre));
if (nombre == NULL) return NULL;
nombre->nombre[0] = 'A'+(rand()%26);
for (int i=1; i<9; ++i){
nombre->nombre[i] = 'a'+(rand()%26);
}
return nombre;
}
还有一点:我删除了if(i == 9)
语句,因为i
永远不会9
在循环条件下i < 9
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句