- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我被困在一个将数组内容(来自用户的输入)转换为预先声明的速记的赋值上。
我希望它像 strcpy("and ", "+") 这样简单;将字符串中的单词“and”更改为“+”符号。
不幸的是,无论我如何构建函数;我收到弃用的转换警告(尝试了变体循环和直接应用程序)。
边注;这是基于赋值的,所以我的字符串快捷方式受到严格限制,并且没有指针(我已经看到使用它们清除故障的几个版本)。
我不是在找人帮我做作业;只是关于如何在不创建 dep 的情况下应用 strcpy 的指导。警告。也许我根本不应该使用 strcpy?
最佳答案
strcpy
将第二个字符串的内容复制到第一个字符串的内存中。由于您正在将字符串文字复制到字符串文字中,因此它无法执行此操作(您无法写入字符串文字),因此它会提示。
相反,您需要构建自己的搜索和替换系统。您可以使用 strstr()
搜索字符串中的子字符串,并将内存中的指针返回到找到的字符串的开头(如果找到)。
让我们以示例字符串Jack and Jill went up the hill
为例。
char *andloc = strstr(buffer, " and ");
这将返回字符串开头的地址(比如 0x100
)加上单词“和”(包括空格)在其中的偏移量(0x100 + 4
) 这将是 0x104
。
然后,如果找到了,可以用&
符号替换。但是,您不能为此使用 strcpy
,因为它会终止字符串。相反,您可以手动设置字节,或使用 memcpy:
if (andloc != NULL) { // it's been found
andloc[1] = '&';
andloc[2] = ' ';
}
或:
if (andloc != NULL) { // it's been found
memcpy(andloc, " & ", 3);
}
这将导致 Jack & d Jill went up the hill
。我们还没有到那一步。接下来,您必须将所有内容打乱以覆盖旧的“和”中的“d”。为此,您认为您现在可以使用 strcpy
或 memcpy
,但这是不可能的 - 字符串(源和目标)重叠,并且两者的手册页都明确指出字符串不能重叠并使用 memmove
代替。
因此您可以将“d”之后的字符串内容移动到“&”之后:
memmove(andloc + 3, andloc + 5, strlen(andloc + 5) + 1);
将一个数字添加到一个字符串中,就像这样添加到指针的地址中。因此,我们正在考虑将旧“and”位置的字符串中 5 个字符的数据复制到从旧“and”位置开始的 3 个字符开始的空格中。要复制的数量是字符串的长度,从“and”位置开始的 5 个字符加上 1,因此它复制字符串末尾的 NULL 字符。
另一种手动执行此操作的方法是遍历每个字符,直到找到字符串的末尾:
char *to = andloc + 3;
char *from = andloc + 5;
while (*from) { // Until the end of the string
*to = *from; // Copy one character
to++; // Move to the ...
from++; // ... next character pair
}
*to = 0; // Add the end of string marker.
所以无论哪种方式,字符串内存都包含:
Jack & Jill went up the hill\0l\0
\0
是字符串标记的结尾,所以实际的字符串“content”只到第一个 \0
和 l\0
现在被忽略。
请注意,这仅在您用更小的零件替换零件时才有效。如果你用更大的东西替换它,所以字符串的大小增加,你将被迫使用 memmove
,它首先将内容复制到暂存器,并确保你的缓冲区有足够的空间存储完成的字符串(这种事情通常是“缓冲区溢出”的一个重要来源,这是一个安全问题,也是系统被黑客攻击的最大原因之一)。此外,您还必须向后做整个事情 - 首先移动弦的后半部分以腾出空间,然后修改两半之间的间隙。
关于c++ - 数组转换指导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43859577/
如何将可为 null 的 guid (guid?) 转换为 guid?我的目的是将可为空的 Guid 列表转换为 Guid 列表。 最佳答案 使用??运算符: public static class
我正在尝试根据 jaro 距离给出的相似性对一组字符串进行聚类。我正在用 python 中的 JellyFish 计算它。我一直在努力弄清楚如何对数据进行聚类。我不是集群方面的专家,这是我第一次尝试弄
我正在寻找的是一种方法,它允许我在用户的浏览器中下载图像以备后用。图像将在鼠标悬停(悬停)事件上激活。问题是我不想只在用户悬停时才下载图像,因为它会产生不好的效果。它必须在网站加载时下载。 有什么建议
Closed. This question needs to be more focused。它当前不接受答案。
我有以下代码: SELECT * FROM ( SELECT p.ProductID, pc.Name, ISNULL(p.Color, 'Unco
再一次,我有一个关于 jQuery 的问题,但我正在尽我最大的努力学习,但有时教程并没有给我我需要的一切。 我正在尝试使一组选项卡起作用,但是,似乎没有任何效果.. 这是我正在使用的代码: HTML:
Guidance bootstrap validator 不适用于 nav nav-tabs help me 我创建了一个分为 4 个选项卡的表单,并将 Bootstrap 验证器添加到表单中以测试输
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我正在尝试使用 Akka Futures 读取多个文件并将每一行传递给可调用对象。我的可调用对象是特定文件的解析器。所以 people.txt 可能会填充 Person 类型的对象。每行可以包含超过
我正在寻求提高我的 javascript 的标准,因为我正在超越简单的 AJAX 形式,转向更丰富的交互,而且它很快就会失控。 关于如何编写正确的 javascript 的资源很多,很多最好的都来自
我正在导入一个包含多行的 Excel 文件。有些列是日期,我必须这样读取它们,但 Apache poi 无法正确读取单元格的格式。事实上,日期必须是 dd/MM/YYYY,但是当我有 04/13/20
我试图让爬虫在连续 3 次尝试后每次都找不到相关页面时“中止”搜索某个子域。提取页面的标题和文本后,我开始寻找正确的页面以提交到我的 solr 集合。 (我不想添加与此查询不匹配的页面) public
我计划使用 Python 制作一个桌面应用程序,以学习一些桌面概念。我打算使用 GTK 还是 Qt,我还没决定使用哪一个。 事实是:我想创建一个可以从命令行调用并使用 GUI 的应用程序。因此它对于
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在将一个低级 C 库转换为 Delphi。 我找到了很多类型转换。我认为这在 C World 中很正常。我想我把它们扔掉是安全的。整数仅在此处为 32 位。你怎么看? 如果我将它转换为对象等,OO
我已经能够为我的 Sprite 应用平滑的动画并使用加速度计控制它。我的 Sprite 固定沿着 x 轴左右移动。 从这里开始,我需要弄清楚如何为 Sprite 创建一条垂直的无限波浪线以尝试追踪。我
我使用的是 Ubuntu,如何指示 pip 使用 Python3 安装而不是 Python2.6? 2.6 是 Ubuntu 上的默认安装。我无法升级它,因为它会破坏 Ubuntu。 最佳答案 任何单
我可以使用 cs50 中的一些帮助来解决此问题。每当我的代码遇到 while 循环时,fread 函数就会返回 0。我似乎无法理解为什么会发生这种情况。即使在我遇到这个问题之前,我的代码也没有按照我的
我已经阅读了很多关于该主题的文章(包括 scrapy 文档),但出于某种原因我无法登录到 vBulletin 网站。让我澄清一下,我不是开发人员,我对编程/抓取的知识非常基础,所以如果有人决定提供帮助
我是一名优秀的程序员,十分优秀!