【发布时间】:2018-07-18 15:19:01
【问题描述】:
for (unsigned int i = 0; i < strlen(s); i++) {
if (s[i] != ' ')
strcat(p, s[i]);
我想在p 字符串的末尾添加s 字符串的当前字符,前提是它不是空格。我如何使用strcat 做到这一点?上面的代码给出了以下错误“从'char'到'const char*'的无效转换”。
我想使用strcat,因为这样我就不必存储 p 字符串的索引来知道将当前字符放在哪里。我希望这是有道理的。
另外,我需要使用字符数组来执行此操作,而不是 c 字符串或任何被调用的内容。
【问题讨论】:
-
strncat可能适合您:strncat(p, &s[i], 1);。 -
成功了,非常感谢。
-
请注意,在循环中使用
strlen()需要代码在每次迭代时评估长度。知道字符串当前有多长会非常更明智,这样您就可以添加额外的字符而无需调用strcat()— 它还必须在每次迭代时扫描字符串。由于函数调用,您有二次代码 - O(N²),但底层算法只需要是线性的 - O(N)。 -
还要注意,
p和s都必须是 C 字符串——即以空字符结尾的字节序列——因为如果strlen()和strcat()是不是字符串。所以你最后的评论是错误的。 -
“我如何使用 strcat 做到这一点?” - 你不知道;您使用一个简单的读写器循环,从源缓冲区读取并有条件地写入目标,完成后终止。不要用锯子敲钉子。