将char添加到char *

时间:2016-01-26 21:19:22

标签: c string

我正在编写一个程序,我需要将char附加到char*。我有char**表示文本行。我试图从char一次只取一个char**,然后将其添加到char*

基本上,我尝试strcat(char*, char[i][j]),但strcat拒绝char[i][j],因为它不是指针。我想我需要使用sprintf(char*, "%c", char[i][j]),但我无法理解如何使用sprintf进行追加。我不希望它覆盖char*中的内容。

任何提示?

4 个答案:

答案 0 :(得分:3)

你几乎得到了它!

strncat (char *, & char[i][j], 1);

这样调用strncat只能复制位置char的{​​{1}}中的char**[i][j]。请记住,它之后还会附加空字符。

答案 1 :(得分:1)

鉴于您知道buf被定义为

char buf [MAXSIZE];

让我们假设已经初始化为初始字符串,并且您想要将mychar添加到它(单个字符)

i = strlen(buf);
if (i < MAXSIZE-1)
  {
    buf[i] = mychar; // Make the new character the last element of buf
    buf[i+1] = '\0' // end the new string with the null character
  }

这将附加新字符并推送结束的空字符以确保它是有效的字符串。这是strcat在附加条目也是字符串时的作用,或者当count为1时strncat执行的操作。注意新的strlen(buf)现在将是i + 1

答案 2 :(得分:0)

假设buf是0终止的c字符串,您可以使用snprintf()

#include <stdio.h>
#include <string.h>

int main(void)
{
   size_t b_len;
   char buf[256];
   char ch = '!';

   strcpy(buf, "Hello world");
   b_len = strlen(buf); 
   snprintf(buf + b_len, sizeof buf - b_len, "%c", ch); 
   printf("%s", buf);

   char *p = malloc(256); /* check if malloc failed */
   strcpy(p, "Hello world");
   size_t len = strlen(p);
   snprintf(p + len, 256 - len, "%c", ch);
   printf("%s", p);

   return 0;
}

如果buf恰好是指针(例如malloc ed指针),那么就不能使用sizeof(它只能在数组上用来获取大小) 。

答案 3 :(得分:0)

我很难理解你的问题,而不是张贴你想要达到的目标的例子,你解释了一些似乎是基于你解决问题的方式,只需要很少的培训和/或经验{ {3}}语言。所以很难写出一个好的答案,但我肯定会试着告诉你一种类似于你想做的事情的方法。

问题是,我非常怀疑strcat()是否适合这个或任何事情,除了连接两个字符串。两个以上,需要比strcat()更好的东西。对于单个char,它绝对不合适。

以下代码将字符串文字数组中的所有字符附加到单个字符串中,然后将其检出

int
main(int argc, char **argv)
{
    char string[100];
    char lines[3][14] = {
       "First line...",
       "Another line.",
       "One more line"
    };
    size_t i;

    i = 0;
    for (size_t j = 0 ; ((j < sizeof(lines) / sizeof(lines[0])) && (i < sizeof(string) - 1)) ; ++j)
    {
        for (size_t k = 0 ; ((k < 13) && (i < sizeof(string) - 1)) ; ++k)
            string[i++] = lines[j][k];
    }
    string[i] = '\0';
    puts(string);

    return 0;
}