开发者

Character Array initialization

开发者 https://www.devze.com 2023-04-02 00:00 出处:网络
I\'m currently playing a bit with C and trying to understand strings. Can somebody please explain why this is working:

I'm currently playing a bit with C and trying to understand strings. Can somebody please explain why this is working:

开发者_JS百科
char test[] = "test";

And why the following does not?

char test[255];
test = "test";


Because this is an initialization:

char test[] = "test";

and this is an assignment:

test = "test";

and you cannot assign arrays in C (and strings in C are just arrays).

Your best bet is to copy the string using strcpy() (or to be safe, strncpy()).


C doesn't allow you to assign values to an entire array except when it's initialized.

The correct way to copy a string into an existing array is with strcpy:

char test[255];
strcpy(test,"test");


even though what you say looks obvious,it is incorrect.you can't directly assign a string to a character array.you could try and use strcpy() function.


Because "test" is a pointer and test is an array. You can always use strcpy() though.


Unfortunately C doesnot support direct assigment of string(As it invloves more than 1 memory address). You must rather use strcpy or memcpy functions.

well yeah

 test[0]='t' works (since your accessing one memory location at the time)


You can't assign an array directly because it is an unmodifiable lvalue. But you can use an indirectly assignment like:

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;
}
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号