0

在 Python 中,可以XXXX使用print "X"*4;C 中的任何简单等价物进行打印?

4

4 回答 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 回答