华为牛客机试题目链接:华为牛客机试题目
HJ4 字符串分隔
描述
•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(每个字符串长度小于等于100)
输出描述:
依次输出所有分割后的长度为8的新字符串
示例1
输入:abc
输出:abc00000
解析
知识点:字符串按长度顺序拆分
思路:
1.strncpy
是C语言标准库中的一个函数,用于将一个字符串复制到另一个字符串中,同时可以指定复制的最大字符数。这个函数特别有用,因为它可以在复制时避免缓冲区溢出,这是传统的 strcpy
函数可能带来的问题。
2.如果 src
的长度小于 n
,则剩余的字符位置在 dest
中将被填充为空字符 \0
。
#include <stdio.h>
#include <string.h>
int main() {
char input[100]; // 假设输入的字符串不会超过100个字符
fgets(input, 100, stdin);
// 移除fgets可能读取的换行符
input[strcspn(input, "\n")] = 0;
char chunk[9]; // 用于存储每个长度为8的子字符串,多一个位置用于存储字符串结束符'\0'
for (int i = 0; i < strlen(input); i += 8) {
int remaining = 8;
if (i + 8 > strlen(input)) {
remaining = strlen(input) - i;
}
strncpy(chunk, input + i, remaining);
chunk[remaining] = '\0'; // 确保子字符串以'\0'结束
printf("%s", chunk);
// 如果剩余字符不足8个,补0
if (remaining < 8) {
for (int j = remaining; j < 8; ++j) {
putchar('0');
}
}
printf("\n");
}
return 0;
}