这可能吗?也就是说,将一个char附加到char *?
char temp[10] = "";
while (isalnum(*x)) {
strcat(temp, *x);
x++;
}
enqueue(&head,temp);
我有一个char *作为变量的队列。然后我有一个char *被读取,如果它指向的char是字母数字,我希望它附加到temp。之后,将它排队。
答案 0 :(得分:4)
由于x
似乎是char *
,您可以使用strncat()
。
while (isalnum(*x)) {
if (bytes_left_in_temp > 0) {
strncat(temp, x, 1);
}
}
更有效率,您可以计算x
中的项目如何被复制,然后传递计数而不是1。
int k = 0;
while (isalnum(x[k])) {
if (k >= bytes_left_in_temp) break;
++k;
}
strncat(temp, x, k);
但是,如上所示,您应该确保注意不要追溯temp
可以容纳的内容。
答案 1 :(得分:3)
假设temp总是足够大:
char temp[10] = "";
char *p = temp;
while (isalnum(*x)) {
*p++ = *x++;
}
*p = '\0';
enqueue(&head,temp);
如果您不确定temp是否总是足够大,请添加一些检查(这不应该是 详细解释)。
答案 2 :(得分:0)
如果x是char *,那么你可以使用strcat(temp,x)