我是计算机科学一年级的学生,我们的老师给了我们一个二进制模式搜索任务。我们必须从字符串中删除子字符串,而无需使用任何库和内置函数,例如(memmove或strstr(。我们唯一的提示是它与"\0"有关。我不明白我们将如何实现这一目标,因为据我所知,空字符仅结束字符串而不是删除它。考虑到未知的输入,它变得更加难以绕过。我需要有关空字符使用的帮助。编辑:哦,我们也不允许创建新数组。EDIT2:如果您在这里寻求解决方案,则问题要复杂得多,请阅读此线程下的评论以及标记的解决方案。
C字符串是"null 终止的",这意味着它们被认为在出现 null(用 C 语言中写入' '
(的地方结束。
如果我从字符串"堆栈溢出"开始,然后用' '
覆盖空格,我现在有字符串"堆栈"。 "溢出"的存储仍然存在,但根据strlen()
、printf()
等 C 函数,它不是字符串的一部分。 事实上,如果我拿着一个指向原始字符串的"O"部分的指针,就好像有两个字符串:"Stack"和"Overflow",你仍然可以同时使用它们。
这就像我来到你住的地方,在你家门前的马路对面建了一堵巨大的墙。 这条路现在缩短了,我这边的人不会知道你在那里。