我可以使用以下代码或它是不正确的?

时间:2015-06-16 07:26:30

标签: c string char character

首先我使用语言c我还是初学者。

char S[20];
S ="ewer" ;

是正确的。

3 个答案:

答案 0 :(得分:1)

不能在C中分配数组(包括字符串)。对于字符串,您需要strcpy,或者最好是strncpy

#include <string.h>

...

char S[20];

strcpy(S, "ewer");             // strcpy is fine for this example

strncpy(S, "ewer", sizeof(S)); // strncpy is safer in general and
                               // should be preferred over strcpy

答案 1 :(得分:1)

不,那不会起作用。

变量S是一个数组,你不能像C中那样分配给数组。字符串"ewer"表示为由字符{{1}终止的字符数组}}。要将其复制到数组中,您需要使用函数:

'\0'

答案 2 :(得分:1)

这是一个很好的问题。事实上,如果你写了char* S,那么这个例子就可以了。您可能会对这样的事实感到困惑:数组和指针有许多相似的东西 - 比如[]运算符。

但是你必须明白数组与指针不同。主要区别之一是您无法增加数组,例如++myArr (此代码适用于指针,但不适用于数组)。您在问题中看到的另一个:您无法重新分配数组变量以指向另一个数组。这正是您要做的事情:您正在为数组变量S指定一个指向文本为"ewer"的地方的指针,这将无效。

假设您想要为文本分配文本,您可以执行以下操作:

char S[] = "ewer";

这里你要说编译器在堆栈上分配尽可能多的空间,因为"ewer" text (加上零结束字符)成立,并在那里复制那个文本。注意空括号[] - 您甚至不需要手动计算符号,编译器会为您完成。