以太网入门套件(PIC32MX9795F512L)
语言:C
MPLAB IDE 8.92
编译器: XC32 v1.3
你好,我想给我的变量加上前导零。最后,我想在数组中使用。例如:c=10*a+b。当为c=5时,它应为05。我不能使用任何printf函数,还是我错了?
发布于 2016-04-02 03:46:07
您可以使用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 *。
发布于 2016-04-02 03:49:00
如果你也要注意负值,添加一个前导零是很容易的。你说你想写一个数组,所以我使用了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
}https://stackoverflow.com/questions/36364333
复制相似问题