【发布时间】:2017-07-18 07:07:18
【问题描述】:
这是我在使用 strcat() 和 strncat() 函数连接两个字符串时遇到问题的特定代码部分。
strcat() 函数被声明为char *strcat(char *dest, const char *src) 和strncat() 为char *strncat(char *dest, const char *src, size_t n),但是当第二个参数是字符串中的单个字符时,它们都会出现问题,即不以'\0' 结尾.我需要将 a 字符连接到一个字符串。
那么这两个功能有什么替代品吗?或者有什么方法可以让这些功能为我工作?
char *cipher_str = (char *)malloc(sizeof(char) * 26);
for (int j = 0; j < col; j++) {
for (int i = 0; i < col; i++) {
if (min == cipher[0][i] && (done[i] != 1)) {
done[i] = 1;
for (int k = 0; k < rows; k++)
strcat(cipher_str, cipher[i][k]);
}
}
...
【问题讨论】:
-
请提供
cipher的定义。 -
对于只附加一个字符,你可以使用
int l = strlen(s); s[l] = ch; s[l+1] = 0;(前提是你有足够的空间分配给s) -
@PaulOgilvie 字符密码[rows][col];
-
@PaulOgilvie 很抱歉丢失了一条数据,密码在被处理和修改之前被初始化为“\0”
-
将缓冲区初始化为零(使用 memset)并使用 memcpy 而不是 strcat。一般来说,语法是 memcpy(buf+pos, &ch, 1);