c - 如何将 char/int 添加到 C 中的 char 数组?

标签 c

如何添加“.”到 C 中的 char Array := "Hello World",所以我得到一个 char Array: "Hello World."这个问题看起来很简单,但我很挣扎。

尝试了以下方法:

char str[1024];
char tmp = '.';

strcat(str, tmp);

但它不起作用。它向我显示了错误:“传递‘strcat’的参数 2 使指针来自整数而不进行强制转换” 我知道在 C 中,char 也可以转换为 int。我还必须将 tmp 转换为 char 数组还是有更好的解决方案?

最佳答案

strcat 有声明:

char *strcat(char *dest, const char *src)

它需要 2 个字符串。 While this compiles:

char str[1024] = "Hello World";
char tmp = '.';

strcat(str, tmp);

这将导致错误的内存问题,因为 strcat 正在寻找一个空终止的 cstring。你可以这样做:

char str[1024] = "Hello World";
char tmp[2] = ".";

strcat(str, tmp);

Live example.

如果你真的想追加一个字符,你需要创建你自己的函数。像这样:

void append(char* s, char c) {
        int len = strlen(s);
        s[len] = c;
        s[len+1] = '\0';
}

append(str, tmp)

当然,您可能还想检查您的字符串大小等以确保内存安全。

关于c - 如何将 char/int 添加到 C 中的 char 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34055713/

相关文章:

c - 使用 select() 调用文件 I/O 的 Pthread 生产者/消费者

objective-c - 是否可以在类外声明 Objective-C 方法?

c - 运行时检查失败 #0 : Why am I getting this and what does it mean?

在 C 中通过 fork() 创建子进程

c++ - 变量范围

c - CUDD 执行中的段错误

c - numaif.h : MPOL_LOCAL undeclared for use in mbind

c - C语言串口: read non-canonical mode

c - void 指向结构的指针导致错误 'dereferencing ' void *' pointer'

c - 在这种情况下,当多个线程访问同一个变量时是否需要互斥锁?