C语言字符串填充问题?

作者站长头像
站长
· 阅读数 5

老师们好:

C 语言实现, 给定一个字符串长度不是16字节倍数时,请将字符串左边用0填充,使其长度为16字节的整倍数。 期望得到下面给出的结果

例1: char arr[] ="12345678"; 程序运行结果, char arr1[]="0000000012345678";
例2: char arr3[] ="123456789123456789"; 程序运行结果, char arr4[]="00000000000000123456789123456789";
例2: char arr5[] ="123456789012345678901234567890123"; 程序运行结果, char arr6[]="000000000000000123456789012345678901234567890123";
......
回复
1个回答
avatar
test
2024-06-28

思路:将长度除以16然后向上取整(注意数据类型),然后取整前后的差为填充长度。实现:

void padStringWithZeros(char *input) {
    int inputLength = strlen(input);
    int targetLength = ((inputLength - 1) / 16 + 1) * 16;  // 向上取整
    
    int zerosToAdd = targetLength - inputLength;
    
    // Shift the existing characters to the right to make space for the zeros
    memmove(input + zerosToAdd, input, inputLength + 1);
    
    // Fill the beginning with zeros
    for (int i = 0; i < zerosToAdd; ++i) {
        input[i] = '0';
    }
}
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容