将字符串转换为int而不删除零

时间:2016-05-21 09:49:22

标签: c string int

我有像

这样的字符串
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。

1 个答案:

答案 0 :(得分:4)

您需要相应地格式化输出。

  • %d只使用最短的字符串表示(无前导零)打印十进制的int
  • %8d(例如)将在大小为8的字段中打印十进制的int(如果需要,则为前导空格)
  • %08d(例如)将在带有前导零的大小为8的字段中以十进制形式打印int。