如何初始化这些数组类型?

时间:2020-05-05 15:34:08

标签: c arrays string typedef c-strings

我正在做一个工作,我收到了一些带有一些“字符串” typedef的代码,以简化字符串的使用,但是现在我在理解代码及其工作方式时遇到了一些麻烦。 你们可以帮我吗?

//----------- THIS IS THE CODE HANDED TO ME -----------------------------

#define MAX_STRING          256
#define MAX_STRING_VECTOR   1024

typedef char String[MAX_STRING];
typedef String StringVector[MAX_STRING_VECTOR];

//----------- THIS IS THE CODE I WROTE -----------------------------

StringVector strV;
String str;

*str = "Hello";
*(strV) = str;

它显示的错误是“分配给具有数组类型的表达式”。

谢谢你们!

1 个答案:

答案 0 :(得分:1)

在C语法中,不允许将char的数组分配给str,例如strcpy,其中带有字符串字面量(初始化除外)。

请使用str将字符串分配给数组。要通过Hello初始化String str = "Hello";,请使用StringVector strV; String str = "Hello"; strcpy(*strV, str);

例如:

str

Online Example

或者如果不需要StringVector strV; strcpy(*strV, "Hello");

strcpy()

注意:<string.h>在标头def listcachedir(directory): def decorator(func): @wraps(func) def wrapper(self): # Join base cache dir to directory fdir = self.locate(directory) if os.path.isdir(fdir): return os.listdir(fdir) else: raise CacheNotFoundError() return wrapper return decorator 中声明。