【发布时间】:2017-04-27 01:03:07
【问题描述】:
我正在尝试通过一些操作将 char 从一个指针一个一个地复制到另一个指针。我尝试使用 strcat()、strncat()、strcpy()、strncpy(),但不断出现错误。如何将字符从源指针复制到目标指针?
我最初将单引号作为 strcat 的 arg 2 传递,但它不起作用。当我将其更改为双引号时,它起作用了。它与“字符串常量”与“字符常量”或完全不同的东西有关吗?
void korsoroi(char *dest, const char *src) {
int wcount = 0;
int i = 0;
while (src[i] != '\0') {
if (src[i] == 'k' && src[i + 1] == 's') {
strcat(dest, "x");
i++;
}
else if (src[i] == 't' && src[i + 1] == 's') {
strcat(dest, "z");
i++;
}
else if (src[i] == ' ') {
wcount++;
if (wcount % 3 == 0) {
strcat(dest, " niinku");
}
if (wcount % 4 == 0) {
strcat(dest, " totanoin");
}
}
else {
//expected 'const char *' but argument is of type 'char'
// strcat(dest, src[i]);
// strcat(dest, *(src + i);
//warning: cast to pointer from integer of different size
// strcat(dest, (char*)src[i]);
//returns strange characters but compiles
//dest[strlen(dest)] = src[i];
}
i++;
}
}
【问题讨论】:
-
dest是否可写且有足够的内存? -
您可以假设地址 dest 有足够的空间来存储结果字符串。