以太网入门工具包(PIC32MX9795F512L)
语言:C
MPLAB IDE 8.92
编译器:XC32 v1.3
您好我想在我的变量中添加前导零。最后我想在数组中使用。
例如:c=10*a+b
。 c=5
05
时printf
。我不能使用任何<div class="content">
<ol>
<li class="image-wrapper">
<div class="block">
<img data-image-index="1" src="Images/image1.jpg">
</div>
</li>
<li class="image-wrapper">
<div class="block">
<img data-image-index="2" src="Images/image2.jpg">
</div>
</li>
</ol>
<button class="prev-btn">Prev</button>
<button class="next-btn">Next</button>
</div>
函数,或者我错了吗?
答案 0 :(得分:1)
您可以使用printf()
将格式化的数字打印到标准输出:
int c = 5;
fprintf(stdout, "c [%02d]\n", c);
如果您不能使用printf()
,则另一个选项是将填充值存储在char *
或字符串中。您可以使用sprintf()
将格式化的字符串写入char *
缓冲区。
例如:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char *argv[]) {
{
char* c_str = NULL;
int c_int = 5;
int c_str_length = 3; /* two bytes for "0", "5", and one byte for the nul terminator */
c_str = malloc(c_str_length);
if (!c_str) {
fprintf(stderr, "Error: Could not allocate space for string!\n");
return EXIT_FAILURE;
}
int n = sprintf(c_str, "%02d", c_int);
if (n != c_str_length) {
fprintf(stderr, "Error: Something went wrong in writing the formatted string!\n");
free(c_str);
return EXIT_FAILURE;
}
fprintf(stdout, "c_str: [%s]\n", c_str);
free(c_str);
return EXIT_SUCCESS;
}
如果你走这条路,你可以看到你如何在路上做一些错误检查。您需要考虑字符串长度(提示:log10()
),或使用静态char []
数组代替长度足够长的char *
。
答案 1 :(得分:0)
如果您也负责处理负值,则可以很容易地添加前导零。你说你想写一个数组,所以我使用了sprintf
但是如果你想直接输出,你可以用类似的方式使用printf
。
char cstr[24];
int c = 10 * a + b;
if (c > 0) {
sprintf(cstr, "0%d", c);
} else if (c < 0) {
sprintf(cstr, "-0%d", -c);
} else {
//sprintf(cstr, "00");
sprintf(cstr, "0"); // depending on your needs
}