使用cacl()居中没有作用?

RT使用cacl()居中没有作用?
求大佬看看哪里出了问题
图片说明

参考GPT和自己的思路:

首先,需要明确的是,c语言中的函数名是“calloc”,而不是“calc”。因此,需要将代码中的“calc”替换为“calloc”。

其次,代码中使用的居中方式是不正确的。在输出字符串之前,需要先计算字符串的长度,并计算居中位置。然后,在居中位置之前输出空格即可。

例如,可以按照以下方式修改代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    char str[] = "Hello world";
    int len = strlen(str);
    int width = 20;
    int padding = (width - len) / 2;
    char* buf = calloc(width + 1, sizeof(char));
    memset(buf, ' ', width);
    memcpy(buf + padding, str, len);
    printf("%s\n", buf);
    free(buf);
    return 0;
}

以上代码首先计算字符串的长度len,然后计算字符串需要填充的空格数padding。接着,使用calloc函数来分配内存,将所有的内存设置为空格。最后,将居中位置之前的空格替换为字符串即可。

注意,以上代码仅适用于输出单行字符串。对于多行字符串,需要根据实际情况进行调整。