在Python中,可以使用XXXX
打印print "X"*4;
C中是否有任何简单的等效内容?
答案 0 :(得分:2)
C对内置/标准库没有太大影响,所以你必须经历分配新缓冲区并将四个字符串连接到它的过程,然后释放缓冲区,打印更简单“X”四次。
int i;
for (i=0; i<4; ++i) {
printf("X");
}
printf("\n");
你可以写自己的。
char* x(const char* s, unsigned int reps) {
size_t len = strlen(s);
char* buf = (char*)malloc(len*reps + 1);
while (reps--) {
memcpy(buf, s, len);
buf += len;
}
*buf = '\0';
return buf;
}
char* repeated = x("X", 4);
printf("%s\n", repeated);
free(repeated);
但正如你所看到的,结果几乎一样长。
答案 1 :(得分:1)
是。欢迎来到C:
int i;
for (i=0; i<4; i++)
printf("X");
答案 2 :(得分:0)
不是真的。在C中,您需要使用循环。
答案 3 :(得分:0)
C中没有标准库可以做到这一点,但您可以随时轻松实现。 C中的一个简单实现:
char * strmul(const char * src, size_t times) {
size_t s_len = strlen(src);
char * res = (char*)malloc(s_len * times + 1);
int i;
for(i = 0; i < times; i++) {
strcpy(res + s_len * i, src);
}
return res;
}
@ikegami
建议的改进版本char * strmul(const char * src, size_t times) {
size_t s_len = strlen(src);
char * res = (char*)malloc(s_len * times + 1);
int i;
for(i = 0; i < times; i++) {
memcpy(res + s_len * i, src);
}
res[s_len * times + 1] = '\0';
return res;
}