键入从char *到int的Casting

时间:2013-04-16 07:17:48

标签: c type-conversion

如何将char指针指向的值存储到整数变量中?我有以下代码:

main ()
{
  int i;
  char *tmp = "10";
  i = (int)tmp;
  printf("value of i is %d",i);
}

我的代码对于给定的任务是否最有效?我正在使用Visual Studio 2008。

2 个答案:

答案 0 :(得分:3)

C中的字符串只是一个字符数组,tmp指向字符串中的第一个字符。您的代码将此指针值(内存地址)转换为整数,并将其存储在i

您真正想要做的是在stdlib中使用strtol

#include <stdlib.h>
main ()
{
  int i;
  char *tmp = "10";
  i = (int) strtol(tmp, 0, 10);
  printf("value of i is %d",i);
}

答案 1 :(得分:1)

您应该查看atoi的字符串到int转换。

请注意atoi does no error checking所以只有在您确切知道输入内容时才使用它(就像您的示例中的常量字符串一样)。否则请使用EmilVikström的答案。