【发布时间】:2014-03-18 07:50:24
【问题描述】:
我想在 C 语言中为字符串添加可变数量的空格,并且想知道是否有标准方法可以做到这一点,然后我自己实现它。
直到现在我还是用了一些丑陋的方法来做到这一点:
- 请假设在调用以下任何函数之前,我已注意为要连接的空间分配了足够的内存
这是我使用的一种方式:
add_spaces(char *dest, int num_of_spaces) {
int i;
for (i = 0 ; i < num_of_spaces ; i++) {
strcat(dest, " ");
}
}
这个性能更好,但看起来也不标准:
add_spaces(char *dest, int num_of_spaces) {
int i;
int len = strlen(dest);
for (i = 0 ; i < num_of_spaces ; i++) {
dest[len + i] = ' ';
}
dest[len + num_of_spaces] = '\0';
}
那么,你有什么标准的解决方案给我,这样我就不用重新发明轮子了吗?
【问题讨论】:
-
你看过 memset 吗?我只是要求您注意缓冲区溢出。
-
看看here。所有尝试都可以转换为简单的算法,您可以通过假设和优化来提高它们的性能。主要问题是太授予
dest足够的空间来接收新字符。 -
我假设目的地中的字符有足够的空间。问题是是否有一种标准方法可以在一个命令中生成这样的空格字符串
-
正如其他人指出的那样,我相信
memset是答案。 -
@user3322273 你首先通过
memset像memset( dest, ' ', sizeof(dest));一样初始化你的dest数组。所以在那之后你甚至不需要增加空间或者你的实现也被优化了。
标签: c string concatenation spaces