题目描述:
1 字符串右补齐,根据len长度补齐str到src中,并把结果输出
2 补齐规则为:
2.1 len的含义为str用src补齐后的字符串长度,不包含 '\0'
2.2 规则示例1:
输入:abcd 11 12
输出:abcd1212121
2.3 规则示例2:
输入:abcd 11 1234567890
输出:abcd1234567
2.4 规则示例3:
输入:abcd 11 1234567
输出:abcd1234567
3 字符串src和字符串str要求均为字母和数字,字符串src和字符串str的长度均不大于256
运行时间限制: 无限制
内存限制: 无限制
输入: 字符串src+空格+长度len+空格+字符串str
输出: 字符串
样例输入: abcd 11 12
样例输出:abcd1212121
本题考查知识点:字符串
本题难度:初级
#include <stdlib.h>
#include <string.h>
#include "oj.h"
/*
功能: 字符串右补齐函数
例子:
rpad(dest, "abcd", 10, "12"),则dest的值为"abcd121212" 解释:字符串"abcd"需要补齐足10个字符,用"12"来填充,在字符串右边填充
rpad(dest, "abcd", 11, "12"),则dest的值为"abcd1212121" 解释:字符串"abcd"需要补齐足11个字符,用"12"来填充,在字符串右边填充
rpad(dest, "abcd", 12, "0"), 则dest的值为"abcd00000000" 解释:字符串"abcd"需要补齐足12个字符,用"0"来填充,在字符串右边填充
rpad(dest, "abcd", 12, " "), 则dest的值为"abcd " 解释:字符串"abcd"需要补齐足12个字符,用空格来填充,在字符串右边填充
rpad(dest, "abcd", 8, "1234567890"),则dest的值为"abcd1234" 解释:字符串"abcd"需要补齐足8个字符,用"1234567890"来填充,在字符串右边填充
rpad(dest, "abcd", 3, "1234567890"),则dest的值为"abc" 解释:字符串"abcd"需要补齐足3个字符,用"1234567890"来填充,在字符串右边填充
输入: 1. 补齐后的字符串地址
2. 源字符串
3. 补齐长度
4. 补齐内容
输出: 补齐后的字符串
返回: 无
*/
/*****************************************************************************
Prototype : rpad
Description : 字符串右补齐,根据len长度补齐str到src中,并把结果存放至dest中
Input : char *dest 补齐后的字符串地址
char *src 源字符串
int len 补齐长度
char *str 补齐内容
Output : 补齐后的字符串
Return Value : void
*****************************************************************************/
//尽量用命名当做注释
#define int_max 1024
void rpad(char *dest, char *src, int len, char *str)
{
//首先比较src长度与补齐长度的大小
if((NULL == dest)||(NULL == src)||(len <= 0)||(len >= int_max)||(str == NULL))
{
return;
}
* dest = '\0';
int Completion_Length = 0;
int Not_Enough_Completion_Length = 0;
int lenSrc = strlen(src);int lenStr = strlen(str);
for(int Traver_Compl_Array_Num = 0;Traver_Compl_Array_Num < len;Traver_Compl_Array_Num++)
{
if(Traver_Compl_Array_Num < lenSrc)
{
dest[Traver_Compl_Array_Num] = *src;
src++;
}
/*else if(Traver_Compl_Array_Num >= lenSrc && Traver_Compl_Array_Num < (lenSrc + lenStr))
{
dest[Traver_Compl_Array_Num] = str[Completion_Length];
Completion_Length++;
}*/
else
{
dest[Traver_Compl_Array_Num] = str[Not_Enough_Completion_Length];
Not_Enough_Completion_Length++;
if(Not_Enough_Completion_Length == lenStr)
{
Not_Enough_Completion_Length = 0;
}
}
}
dest[len] = '\0';
return;
}