TASK:// target - 启动记录结果的参数 目标应该是"来源"左边补充了" 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] = '\0';
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;
}
答案 0 :(得分:1)
对于初学者,您可以使用标准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
至于你的代码,那么该函数不会在左边附加任何内容。