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