左填充文本

Left padded text

TASK: // 目标 - 开始一个参数来记录结果 目标应该是 "source" 左辅以 "fill_char" 到长度 "cnt"。如果 cnt 小于源的长度,则它等于目标源。 // 现在正在向右移动,必须改变一些东西,但我不确定是什么以及如何改变。你能给我建议吗。如果您有不同的决定,请与我分享。谢谢 :)))!

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

int lpad(char* target, char* source, char fill_char, int cnt)
{
    int i;
    int source_size = strlen(source);
    for (i = 0; i < source_size; i++)
        target[i] = source[i];
    for (i = source_size; i < cnt; i++)
        target[i] = fill_char;
    target[i] = '[=10=]';
    return 0;
}
int main(int argc, char* argv[])
{
    char source[128];
    char target[128];
    char fill_char;
    int cnt;
    scanf("%s\n", &source);
    scanf("%c\n", &fill_char);
    scanf("%d\n", &cnt);
    lpad(target, source, fill_char, cnt);
    printf("%s\n", target);
    return 0;
}

对于初学者,您可以使用标准 C 字符串函数而不是循环。

看来你的意思如下

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

char * lpad( char *target, const char *source, char fill_char, size_t cnt )
{
    size_t source_size = strlen( source );

    if ( source_size < cnt )
    {
        memset( target, fill_char, cnt - source_size );
    }

    strcpy( target + ( source_size < cnt ? cnt - source_size : 0 ), source );

    return target;
}

#define N   16

int main(void) 
{
    char *source= "monkey";
    char target[N];

    puts( lpad( target, source, '*', N - 1 ) );

    return 0;
}

程序输出为

*********monkey

至于您的代码,该函数不会在左侧附加任何内容。