如果字符串(包含数字)的内容小于字符串的大小,我必须用前导零填充该字符串。
示例:
char str[11] = "12345";
预期输出应为:0000012345
我使用 sprintf
填充了前导 0 的 string
,但使用 整数 作为参数:
sprintf(out_str,"%010d",some_integer); //out_str is a string of 11 characters
但现在我只剩下两种方法来用前导零填充字符串(包含数字):
第一种方法
char main_string[11] = "12345";
char temp_string[11] = "";
sprintf("temp_string,"%010d", atoi(main_string));
strcpy(main_string,temp_string);
第二种方法
char main_string[11] = "12345";
char temp_string[11] = "";
memset(temp_string,'0',sizeof(temp_string));
strcpy(temp_string + sizeof(temp_string) - 1 - strlen(main_string), main_string);
strcpy(main_string, temp_string);
如果我尝试使用 sprintf
和 string
作为参数,我会得到前导空白:
char main_string[11] = "12345";
char temp_string[11] = "";
sprintf(temp_string,"%010s",main_string);
printf("%s",temp_string);
输出:
12345 //leading spaces
有什么简单的方法可以实现这一点吗?
最佳答案
假设你想要原数组中填充的字符串,可以使用memmove
将数字移至数组末尾,然后使用memset
填充带零。
char str[11] = "12345";
size_t text_size = strlen(str) + 1;
memmove(str + sizeof(str) - text_size, str, text_size);
memset(str, '0', sizeof(str) - text_size);
关于c - 在某些字符串中填充前导零(0 个字符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60236130/