我正在编写一个程序,我需要将char
附加到char*
。我有char**
表示文本行。我试图从char
一次只取一个char**
,然后将其添加到char*
。
基本上,我尝试strcat(char*, char[i][j])
,但strcat
拒绝char[i][j]
,因为它不是指针。我想我需要使用sprintf(char*, "%c", char[i][j])
,但我无法理解如何使用sprintf
进行追加。我不希望它覆盖char*
中的内容。
任何提示?
答案 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;
}