char[] 转 int

miwablog 2009-02-20 02:26:35

int GetTime()
{
HKEY hResult;

char result[256];

strcpy(result,"");

if(ERROR_SUCCESS!=RegOpenKey(HKEY_LOCAL_MACHINE,REG_SYSTEM,&hResult))

{

return 0;

}

DWORD dwcount=255;

RegQueryValueEx(hResult,REG_TIME,0,0,(BYTE*)&result[0],&dwcount);

RegCloseKey(hResult);

return (int)result;
}



我要在注册表读取一个REG_SZ类型的数据,里面是一串数字如:360000,但是我使用上面的函数读取只是读出3,应该是char[] 转 int的问题,请问char[] 转 int怎么转呢,谢谢大家了
...全文
3398 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuzl32 2009-02-20
  • 打赏
  • 举报
回复

//怀疑这个语句的问题
RegQueryValueEx(hResult,REG_TIME,0,0,(BYTE*)&result[0],&dwcount);

printf("%s",result); //看看输出的是什么?

yuzl32 2009-02-20
  • 打赏
  • 举报
回复
atoi
miwablog 2009-02-20
  • 打赏
  • 举报
回复
atoi()不行,我断点测试还是得到3
waizqfor 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 miwablog 的帖子:]
C/C++ code
int GetTime()
{
HKEY hResult;

char result[256];

strcpy(result,"");

if(ERROR_SUCCESS!=RegOpenKey(HKEY_LOCAL_MACHINE,REG_SYSTEM,&hResult))

{

return 0;

}

DWORD dwcount=255;

RegQueryValueEx(hResult,REG_TIME,0,0,(BYTE*)&result[0],&dwcount);

RegCloseKey(hResult);

ret…
[/Quote]
LZ用atoi 和atol函数都可以的
自己写一个函数看看

#include <stdio.h>;

int strnum(char *str)
{
int len, num = 0;
unsigned char c;

len = strlen(str);
while(len--) {
c = *str++;
if(!(c >;>; 4 ^ 3)) {
if((c & 0xf) < 0xa) {
num = num * 10 + (c & 0xf);
continue;
}
}
num = -1;
break;
}

return num;
}

main()
{
int num;
char str[5];

scanf("%s", str);
num = strnum(str);

if(num < 0) {
printf("input error\n");
return;
}
printf("%d\n", num);
return;
}
hmsuccess 2009-02-20
  • 打赏
  • 举报
回复
atoi/atol
或者,sprintf
pengzhixi 2009-02-20
  • 打赏
  • 举报
回复
用string 然后用atoi函数
yellowhwb 2009-02-20
  • 打赏
  • 举报
回复
C语言库函数名: atoi
  功 能: 把字符串转换成整型数
  函数说明: atoi()会扫描参数nptr字符串,检测到第一个数字或正负符号时开始做类型转换,之后检测到非数字或结束符 \0 时停止转换,返回整型数。
  原型: int atoi(const char *nptr);
  需要用到的头文件: #include <stdlib.h>
  程序例:
  1)
  #include <stdlib.h>
  #include <stdio.h>
  int main(void)
  {
  int n;
  char *str = "12345.67";
  n = atoi(str);
  printf("string = %s integer = %d\n", str, n);
  return 0;
  }
  执行结果
  string = 12345.67 integer = 12345
  2)
  #include <stdlib.h>
  #include <stdio.h>
  int main()
  {
  char a[] = "-100" ;
  char b[] = "123" ;
  int c ;
  c = atoi( a ) + atoi( b ) ;
  printf("c = %d\n", c) ;
  return 0;
  }
  执行结果
  c = 23
  简单的实现atoi函数的源代码:
  int my_atoi(const char *str){
  int result= 0;
  bool signal = false;
  if((*str>='0'&&*str<='9')||*str=='-'||*str=='+'){
  if(*str=='-'||*str=='+'){
  if(*str=='-')
  signal = true;
  str++;
  }
  }
  else
  return 0;
  while(*str>='0'&&*str<='9')
  result = result*10+(*str++ -'0');
  return signal?-result:result;
  以上源代码有一个缺点,就是没有检查最大值,因为int的值是有范围的。
  另外,c 语言没有bool类型。
a_rockboy 2009-02-20
  • 打赏
  • 举报
回复
使用
char result[256];
.....
return _atoi(result)
返回值就是标示的数字
yellowhwb 2009-02-20
  • 打赏
  • 举报
回复
atoi函数试试

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧