繁体   English   中英

将一个字符串中的一个字符添加到另一个字符串的末尾(strcat)

[英]Add one character from a string to the end of another string (strcat)

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字符串或任何被称为的字符串。

一个更明智的算法将避免完全使用strcat()strncat()

int j = strlen(p);
for (int i = 0; s[i] != '\0'; i++)
{
    if (s[i] != ' ')
        p[j++] = s[i];
}
p[j] = '\0';

这避免了使用strlen()strcat() (或strncat() )必然涉及的二次行为。 这确实意味着您需要跟踪将字符放置在p ,但是这样做的工作很简单。 一般而言,在10个字符左右的字符串上,二次行为不会有问题,但是如果字符串达到1000个字节或更多,则二次行为就会成为问题(它需要1,000,000次操作,而不是1,000次操作-这会变得很明显)。

首先,您需要将地址(数组本身是第一个元素的地址)传递给strcat ,而不是char 这就是为什么您需要在s [i]之前使用&运算符。

您在这里有一个有效的例子

#include <stdio.h>
#include <string.h>
int main()
{

    char s[50]= "Hello World";
    char p[50]= "Hello World";
    for(unsigned int i=0;i<strlen(s);i++){
    if(s[i]!=' ') 
    strncat(p,&s[i],1);
    }
    puts(p);
    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM