我怎么做重复一个字符串? 像“你好世界”* 3 输出“hello world hello world hello world”
答案 0 :(得分:12)
在您的源代码中,没有太多处理,可能最简单的方法是:
#define HI "hello world"
char str[] = HI " " HI " " HI;
这将声明一个请求值的字符串:
"hello world hello world hello world"
如果你想要代码,你可以使用类似的东西:
char *repeatStr (char *str, size_t count) {
if (count == 0) return NULL;
char *ret = malloc (strlen (str) * count + count);
if (ret == NULL) return NULL;
strcpy (ret, str);
while (--count > 0) {
strcat (ret, " ");
strcat (ret, str);
}
return ret;
}
现在请记住,这可以提高效率 - 多个strcat
操作已经成熟,可以进行优化,以避免一遍又一遍地处理数据(a)。但这应该是一个很好的开始。
您还负责释放此功能返回的内存。
(a)例如:
// Like strcat but returns location of the null terminator
// so that the next myStrCat is more efficient.
char *myStrCat (char *s, char *a) {
while (*s != '\0') s++;
while (*a != '\0') *s++ = *a++;
*s = '\0';
return s;
}
char *repeatStr (char *str, size_t count) {
if (count == 0) return NULL;
char *ret = malloc (strlen (str) * count + count);
if (ret == NULL) return NULL;
*ret = '\0';
char *tmp = myStrCat (ret, str);
while (--count > 0) {
tmp = myStrCat (tmp, " ");
tmp = myStrCat (tmp, str);
}
return ret;
}
答案 1 :(得分:2)
你可以使用sprintf。
char s[20] = "Hello";
char s2[20];
sprintf(s2,"%s%s%s",s,s,s);
答案 2 :(得分:0)
#include <stdio.h>
#include <string.h>
int main(void) {
char k[100];
gets(k);
int lk=strlen(k);
int times;
scanf("%d",×);
int tl= times*lk;
int i,x=0;
for(i=lk-1;i<tl;i++)
{
k[i+1]=k[x];
x++;
}
for(i=0;i<tl;i++)
{
printf("%c",k[i]);
}
return 0;
}
答案 3 :(得分:0)
您可以尝试编写自己的功能。它也适用于单长度字符串(即复制单个字符串)。它使用“string.h”中的函数“strcat()”,所以不要忘记包括这个标题。
char *
str_repeat(char str[], unsigned int times)
{
if (times < 1)
return NULL;
char *result;
size_t str_len = strlen(str);
result = malloc(sizeof(char) * str_len + 1);
while (times--) {
strcat(result, str);
}
return result;
}
但是,如果您只需要复制字符串进行打印,请尝试使用宏
#define PRINT_STR_REPEAT(str, times) \
{ \
for (int i = 0; i < times; ++i) \
printf("%s", str); \
puts(""); \
}
结果
PRINT_STR_REPEAT("-", 10); // ----------
puts(str_repeat("-", 10)); // ----------
PRINT_STR_REPEAT("$", 2); // $$
puts(str_repeat("$", 2)); // $$
PRINT_STR_REPEAT("*\t*", 10); // * ** ** ** ** ** ** ** ** ** *
puts(str_repeat("*\t*", 10)); // * ** ** ** ** ** ** ** ** ** *
PRINT_STR_REPEAT("*_*", 10); // *_**_**_**_**_**_**_**_**_**_*
puts(str_repeat("*_*", 10)); // *_**_**_**_**_**_**_**_**_**_*
答案 4 :(得分:0)
这是一种在C中重复字符串N次的方法。
那是一个字符串“abc” 我想要一个长度为7的字符串,该字符串由重复的字符串组成。
N = 7; 结果:“abcabca”
series2
重复的String最后是“abcabca”,oldString是“abc”。
答案 5 :(得分:0)
我已经根据这篇文章中的早期答案做了这个功能。 我在这里分享,因为之前的一些例子已经被我抛出了段错误
Dim Direction As Integer = 1;
Private Sub tmrEnemy_Tick(sender As Object, e As EventArgs) Handles tmrEnemy.Tick
If enemy.Top >= 445 Then 'Reached the bottom, go up.
direction = -1
Else If enemy.Top <= 0 Then 'Reached the top, go down.
direction = 1
End If
enemy.Top += direction * 5
End Sub