我需要在一块内存中搜索一串字符,但其中几个字符串的每个字符都为空分隔,如下所示:
“我..a.m..a.s.t.r.i.n.g”
所有 '. 都是空字符。我的问题来自于实际将其记入内存。我尝试过多种方法,例如:
char* str2;
str2 = (char*)malloc(sizeof(char)*40);
memcpy((void*)str2, "123\0567\09abc", 12);
将把以下内容放入str2指向的内存中:123.7.9abc..
就像是
str2 = "123456789\0abcde\054321";
将让 str2 指向一个看起来像这样的内存块123456789.abcde,321
,其中“.”是空字符,“,”是实际的逗号。
显然,在 cstrings 中插入空字符并不像我想象的那么容易,就像插入换行符一样。我在尝试使用字符串库时也遇到了类似的困难。我可以做单独的作业,比如:
char* str;
str = (char*)malloc(sizeof(char)*40);
strcpy(str, "123");
strcpy(str+4, "abc");
strcpy(str+8, "ABC");
但这当然不是优选的,我相信问题在于我对 C 风格字符串如何存储在内存中的理解。显然“abc\0123”实际上并没有进入内存61 62 63 00 31 32 33
(十六进制)。它是如何存储的?我如何存储我需要的内容?
(我也为没有在块中设置代码而道歉,这是我第一次发布问题,不知何故“四行间距”比我显然能处理的更困难。谢谢你,Luchian。我看到需要更多换行符。)