我目前正在玩C并尝试理解字符串。有人可以解释为什么这有效:
char test[] = "test";
以下为什么没有?
char test[255];
test = "test";
答案 0 :(得分:8)
因为这是初始化:
char test[] = "test";
这是作业:
test = "test";
并且您无法在C中分配数组(C中的字符串只是数组)。
您最好的选择是使用strcpy()
复制字符串(或者是安全的,strncpy()
)。
答案 1 :(得分:5)
C不允许您为整个数组赋值,除非它已初始化。
将字符串复制到现有数组的正确方法是strcpy
:
char test[255];
strcpy(test,"test");
答案 2 :(得分:0)
即使你说的看起来很明显,也是不正确的。你不能直接将字符串分配给字符数组。你可以尝试使用strcpy()函数。
答案 3 :(得分:0)
因为“test”是指针而test是数组。你总是可以使用strcpy()。
答案 4 :(得分:0)
不幸的是,C不支持字符串的直接赋值(因为它涉及多于1个内存地址)。你必须使用strcpy或memcpy函数。
好 是的
test[0]='t' works (since your accessing one memory location at the time)
答案 5 :(得分:0)
您无法直接分配数组,因为它是不可修改的左值。但您可以使用间接分配,例如:
typedef struct { char s[100]; } String;
int main()
{
char a[100] = "before";
assert( sizeof a >= sizeof(String) );
puts( a );
*(String*)a = *(String*) "after";
puts( a );
return 0;
}