在 Python 中,可以XXXX
使用print "X"*4;
C 中的任何简单等价物进行打印?
问问题
1835 次
4 回答
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);
但正如你所看到的,结果几乎一样长。
于 2013-10-25T17:38:14.150 回答
1
是的。欢迎来到 C:
int i;
for (i=0; i<4; i++)
printf("X");
于 2013-10-25T17:38:31.257 回答
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;
}
于 2013-10-25T17:43:49.313 回答
0
并不真地。在 C 中,您需要使用循环。
于 2013-10-25T17:37:48.513 回答