c语言 指针复制字符串数组中,不能从C中的strcpy指针数组中复制字符串?

数组dict是一个指向字符串文字的指针数组。

在这份声明中

strcpy(dict[1],newWord1);

你要复制一个字符串中另一个字符串字面直译。

字符串文字在C和C++中是不可修改的。任何修改strig文字的尝试都会导致程序未定义的行为。

从C标准(6.4.5字符串文本)

7这些阵列是否是不同的条件是它们的 元素具有适当的值是不确定的。 如果程序尝试 修改这样一个数组,行为是未定义的。

如果您要在其元素或动态分配的字符数组的一维数组中复制字符串文字,您应该声明一个二维字符数组。

程序可以看看下面的方式

#include

#include

#define N 9

size_t numberOfWordsInDict(char dict[][N])

{

size_t n = 0;

while (*dict[n]) ++n;

return n;

}

void printDict(char dict[][N])

{

printf("Dictionary:\n");

size_t n = numberOfWordsInDict(dict);

if (n == 0)

{

printf("The dictionary is empty.\n");

}

else

{

for (size_t i = 0; i < n; i++)

{

printf("- %s\n", dict[i]);

}

}

}

int main(void)

{

char dict[10][9] =

{

"aap", "bro ", "jojo", "koe", "kip", "haha", "hond", " drop"

};

char *newWord1 = "hoi";

printDict(dict);

strcpy(dict[1], newWord1);

printDict(dict);

return 0;

}

程序输出是

Dictionary:

- aap

- bro

- jojo

- koe

- kip

- haha

- hond

- drop

Dictionary:

- aap

- hoi

- jojo

- koe

- kip

- haha

- hond

- drop

或者你可以使用一个可变长度数组。

请记住,根据C标准的功能main不带参数应声明如下

int main(void)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值