Мне нужно выполнить поиск по куску памяти для строки символов, но некоторые из этих строк разделяют каждый символ, например:
«I. .am. a. .string "
со всеми символами '.', являющимися нулевыми. Моя проблема возникает из-за того, что она попадает в память. Я попробовал несколько способов, например:Манипулирование C-строками с несколькими нулевыми символами в памяти
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");
Но это, безусловно, не является предпочтительным, и я считаю, что проблема заключается в моем понимании того, как строки с стиля сохраняются в памяти. Очевидно, что «abc \ 0123» фактически не входит в память как 61 62 63 00 31 32 33
(в шестнадцатеричном формате). Как он хранится и как я могу хранить то, что мне нужно?
(Я также извиняюсь за то, были необходимы.)
Используйте кнопку {} над окном редактирования или ctrl-K, чтобы создать блоки кода. –