我很难将数组的字符值附加到字符串(handSorted)
上。 hand[]
是预定义的文本数组。
char *handSorted = malloc(strlen(hand)+1);
strcat(handSorted, hand[2]);
例如,我希望handSorted
是值hand[2]
的字符串,字母'A'。
答案 0 :(得分:3)
在处理C时,最好学习如何使用终端中的手册页。这是strcat的条目。
DESCRIPTION
The strcat() and strncat() functions append a copy of the
null-terminated string s2 to the end of the null-terminated
string s1, then add a terminating `\0'.
这是一个问题。你需要handSorted为null终止。
char *handSorted = malloc(strlen(hand)+1);
handSorted[0] = '\0';
strcat(handSorted, hand[2]);
但仍有问题。 hand[2]
是单个字符,strcat()需要一个字符指针,AKA是一个字符串。所以你需要使用'address-of'运算符 - &amp ;.传递一个字符的地址。像这样。
char *handSorted = malloc(strlen(hand)+1);
handSorted[0] = '\0';
strcat(handSorted, &hand[2]);
我认为这就是我们所追求的目标。
答案 1 :(得分:0)
strcat
函数要求两个参数都是以空字符结尾的字符串(也是指针),因为你按值传递给一个字符会导致未定义的行为(可能是段错误因为它会尝试读取可能在分配区域之外的低内存地址。)
如果您要添加单个字符,也可以直接设置字符值:
size_t charLength = strlen( handSorted );
assert( charLength < sizeof( handSorted ) + 1 ); // assuming handSorted hasn't decomposed from char[N] to char*.
handSorted[ charLength ] = hand[2]; // overwrite existing null-terminator with desired char
handSorted[ charLength + 1 ] = '\0'; // set new null-terminator