首页 > 解决方案 > 从类型'char*'(矩阵+结构)分配给类型'char*[length]'时不兼容的类型

问题描述

我正在做我的作业。我们必须用新类型的结构制作矩阵。

#include<stdio.h>
typedef char* String;
typedef struct{
  String Name[10];
  String ID[6];
  float yo;
}data;

int main(){
  data user[3][3];
  // some code
  // wanna assign value
  user[0][0].Name="Charles";
  user[0][0].ID="123123";
  user[0][0].yo=20;
  // another code
}

当我尝试编译它时,它显示错误

[错误] 从 type'char*' 分配给 type 'char*[10]' 时类型不兼容

如何解决?

标签: c

解决方案


我认为您的 typedef 并不能帮助您理解问题。

typedef char* String;
String Name[10];

在这里,您写了String Name[10]which 等价于char *Name[10]which is 和 char 上的指针数组。

user[0][0].Name="Charles";

在这里,您将值Charles(可以理解为 char*)分配给类型的变量char *[]

此外,如果你想分配一个char *值(假设你解决了第一个问题),你可以使用strcpyorstrdup例如,(如果你使用strcpy不要忘记malloc

希望你能理解


推荐阅读