我有像
这样的字符串char str[10] = "0123456789";
我需要将其转换为int
。我尝试使用atoi
,但此函数会删除0
。我在谷歌搜索它,发现了同样的问题here。许多答案都使用strtol
提供了解决方案,但它无效。以下是我用于strtol
的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[30] = "0123456789 This is test";
char *ptr;
int ret;
ret = strtol(str, &ptr, 10);
printf("The number is %d\n", ret);
printf("String part is %s\n", ptr);
return(0);
}
Output:
The number is 123456789
String part is This is test
在这种情况下我做错了什么。如何在不删除零的情况下将字符串转换为int。
答案 0 :(得分:4)
您需要相应地格式化输出。
%d
只使用最短的字符串表示(无前导零)打印十进制的int %8d
(例如)将在大小为8的字段中打印十进制的int(如果需要,则为前导空格)%08d
(例如)将在带有前导零的大小为8的字段中以十进制形式打印int。