C语言 - 如何使用“字符串”设置静态字符数组

3

很简单的问题,但我已经被卡了好几天,谷歌没有给我任何答案,我甚至试过必应... ;o)

我正在VS2010下纯C语言开发Windows程序。

我有一个静态字符数组,如下所示...

static char word[5];

我可以很好地设置每个数组位置,例如...

word[0] = 'f'; word[1] = 'o'; word[2] = 'o';

但是我似乎无法在声明后的任何时候做到这一点...
word = "foo";

任何帮助或指导我做错了哪些地方将不胜感激。提前感谢大家。

有任何帮助或指针吗?双关语:] - user541686
2个回答

4
strncpy(word, "foo", _countof(foo));

如果没有定义_countof,则使用sizeof(foo) / sizeof(*foo)代替。

太好了,谢谢Mehrdad,这个方法非常有效。我是一名C#程序员,在深入研究这个领域后,对C语言的开发者充满敬意。一旦系统允许,我会将您的答案标记为已接受。 - Nick
@Nick:哈哈,当然,很高兴能帮到你。:) 是的,我也喜欢C#,但我发现有必要学习C,所以我也学了。C并不那么糟糕;但C++就是另一只野兽! - user541686
1
是的,我认为学习C语言也很有好处,它可以让你了解更底层的运作原理。我知道太多开发人员在C#中调用非常昂贵的操作,因为他们不理解方法调用在内存层面上的实际操作。 - Nick
@Nick:完全正确。即使你已经学会了C语言,你也应该学习CPU缓存以及它的工作原理,因为这样你就会知道,例如,如果你正在添加两个数组,循环的顺序i然后是j还是j然后是i)可能会将你的循环速度减慢10倍。 :) (这被称为引用局部性。) - user541686

2

数组不是指针,指针也不是数组。

在大多数情况下,数组会衰变为指向其第一个元素的指针。但是该指针是不可修改的。

word = "foo";

数组word会衰变为一个指向其第一个元素的不可修改指针...并且您尝试通过将其赋值为字符串字面量"foo"的地址来修改该指针。


感谢您的输入,pmg。我相信通过这个,我对问题有了更好的理解。 - Nick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接