初学者问一个C语言问题

youyidai 2007-03-26 11:12:48
把十六进制数字组成的字符串转化为与之等价的整型值
#include <stdio.h>
#define YES 1
#define NO 0
int htoi(char *s)
{
int hexdigit,i=0,inhex,n;
if(s[i]=='0')
{
++i;
if(s[i]=='x'||s[i]=='X')
++i;
}
n=0;
inhex=YES;
for( ;inhex=YES;++i)
{
if(s[i]>='0' && s[i]<='9')
hexdigit=s[i]-'0';
else if(s[i]>='a'&&s[i]<='f')
hexdigit=s[i]-'a'+10;
else if(s[i]>='A'&&s[i]<='F')
hexdigit=s[i]-'A'+10;
else
inhex=NO;
if(inhex==YES)
n=16*n+hexdigit;
}
return n;
}
main()
{
char *s="oxc6f";
printf("%d",htoi(s));
}
运行时说应用内存错误,请问各位大侠,这是什么问题
...全文
148 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
youyidai 2007-03-26
  • 打赏
  • 举报
回复
太谢谢了,我看了一个早上,调试了半天也看不出来,果然这里的强人多!散分了
iu_81 2007-03-26
  • 打赏
  • 举报
回复

for( ;inhex==YES;++i)
=====================
for( ;inhex=YES;++i)
iu_81 2007-03-26
  • 打赏
  • 举报
回复
for(i=2;i<strlen(s);++i)
=============================
for( ;inhex=YES;++i)
youyidai 2007-03-26
  • 打赏
  • 举报
回复
字符串的最后一个字符时'\0',这样的话读到这里
else
inhex=NO;

inhex=NO
跳出for循环了,我这样理解对嘛
silenceburn 2007-03-26
  • 打赏
  • 举报
回复
第一个错 inhex=YES 应为 inhex == YES
第二个错 char *s="oxc6f"; 正确的输入应为char *s="0xc6f";

初学都这样,写个几千行以后就好了:)
PS,把inhex ==YES 习惯性写为 YES==index就不会老犯这个错了
www_adintr_com 2007-03-26
  • 打赏
  • 举报
回复
你没考虑字符串会结束的。
内容概要:本文详细介绍了利用Simulink进行变压器开路试验的电路连接配置与仿真实现方法,重点在于通过仿真手段还原实际电力系统中变压器在空载条件下的电气特性,从而深入理解其工作原理与性能表现。文章作为电力系统仿真系列研究的一部分,系统阐述了从电路模型搭建、参数设定、仿真运行到结果分析的完整流程,突出展示了MATLAB/Simulink在电力设备建模与教学科研中的强大功能与应用价值。; 适合人群:具备电力系统基础知识,熟悉MATLAB/Simulink仿真环境,从事电气工程、自动化及相关领域的研发人员,以及高年级本科生和研究生。; 使用场景及目标:①掌握变压器开路试验的基本原理与Simulink仿真建模的具体步骤;②通过仿真实验深入理解空载电流、铁芯损耗及励磁特性等关键参数的物理意义;③为后续开展变压器短路试验、暂态过程分析以及其他电力设备的仿真研究奠定理论与实践基础。; 阅读建议:建议结合Simulink软件动手实践,逐步构建并调试电路模型,重点关注各元件参数的设置方法与测量模块的应用技巧,同时推荐参考文中提及的其他相关仿真案例进行拓展学习,以全面提升对电力系统仿真实践的整体认知与操作能力。

70,038

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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