c - 如何在 C 中创建字符串数组?

标签 c arrays string

我正在尝试在 C 中创建一个字符串数组。如果我使用此代码:

char (*a[2])[14];
a[0]="blah";
a[1]="hmm";

gcc 给我“警告:从不兼容的指针类型赋值”。执行此操作的正确方法是什么?

编辑:我很好奇为什么这会给出编译器警告,因为如果我执行 printf(a[1]);,它会正确打印“hmm”。

最佳答案

如果你不想改变字符串,那么你可以简单地做

const char *a[2];
a[0] = "blah";
a[1] = "hmm";

当您这样做时,您将分配一个包含两个指向 const char 的指针的数组。然后,这些指针将被设置为静态字符串 "blah""hmm" 的地址。

如果你确实想改变实际的字符串内容,你必须做类似的事情

char a[2][14];
strcpy(a[0], "blah");
strcpy(a[1], "hmm");

这将分配两个连续的数组,每个数组包含 14 个 char,之后静态字符串的内容将被复制到它们中。

关于c - 如何在 C 中创建字符串数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1088622/

相关文章:

c - 关于C语法的问题

c - 关于线程和条件变量以及同步

java - 添加到数组时强制关闭

java - 使用JAVA形成测试数据列表进行selenium功能测试

c - 与 mkl_malloc 的内存对齐

c - 为什么当我们在格式说明符后面添加空格时,即使我们传递一个引用,scanf() 也会读取两个值

javascript - 将属性插入多维数组

Java 验证基本计算器程序中的输入

c# - 在 Linq where 子句中使用带有字符串的 switch-case

python - 为什么lambda函数保持循环最后一步的形式?