Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 左填充文本_C_String_Padding - Fatal编程技术网

C 左填充文本

C 左填充文本,c,string,padding,C,String,Padding,TASK://target-启动用于记录结果的参数 目标应该是一个“源”,左边加上长度为“cnt”的“fill_char”。如果cnt小于源的长度,则它等于目标源。 //现在是正确的,必须改变一些东西,但我不知道是什么和如何。你能给我一些建议吗。如果你有不同的决定,请与我分享。谢谢你 #包括 #包括 #包括 #包括 intlpad(char*目标,char*源,char fill\u char,intcnt) { int i; int source_size=strlen(source); 对于

TASK://target-启动用于记录结果的参数 目标应该是一个“源”,左边加上长度为“cnt”的“fill_char”。如果cnt小于源的长度,则它等于目标源。 //现在是正确的,必须改变一些东西,但我不知道是什么和如何。你能给我一些建议吗。如果你有不同的决定,请与我分享。谢谢你

#包括
#包括
#包括
#包括
intlpad(char*目标,char*源,char fill\u char,intcnt)
{
int i;
int source_size=strlen(source);
对于(i=0;i
对于初学者,您可以使用标准的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;
}

对于您的代码,则函数不会在左侧追加任何内容。

您能否a)正确设置代码格式(缺少缩进、随机回跳/
在此处输入代码
)b)修复代码以便进行编译?(LPAD函数没有闭合括号)。它看起来可疑地像是C,不是C++。是的,但是源、CNT和char必须从用户输入。我的程序是OOKE,但是移动的源在右边。如果我写的是猴子=源,“*”是char,15是CNT,看起来像这个猴子。答案必须是******猴子..是的,但是source,cnt和char必须从用户输入我的程序运行正常,但正在向右移动source等。如果我为char写monkey=source,为char写“*”,为cnt写15,看起来像这只猴子************,答案必须是*********猴子。。非常感谢。
#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