C语言将字符串转换为数字出错,请教高手
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言将字符串转换为数字出错,请教高手相关的知识,希望对你有一定的参考价值。
//使用2008版本的VC设计,出现问题,但是不知道问题所在,郁闷ing……
#include"stdio.h"
#include"string.h"
void main()
char s[6];
int n;
printf("please input a char number:");
gets(s);
if(*s=='-')
n=-chnum(s+1);
else
n=chnum(s);
printf("\n");
printf("The int number is:%d\n",n);
getchar();
int chnum(char *p)
int num=0,k,j,len;
len=strlen(p);
for(;*p='\0';p++)
k=*p-'0';
j=(--len);
while(j>0)
k=k*10;
num=num+k;
return(num);
//图片是运行结果截图
函数要先申明再使用,否则在某些情况下无法编译
函数chnum中for循环永远无法执行,应该改为
for(;*p!='\0';p++)
while语句是死循环,因为j>0恒成立
同学你没有好好考虑吧,编程之前应该画个流程图 参考技术B int chnum(char *p)
int num=0,k,j,len;
len=strlen(p);
for(; *p !='\0'; p++)
k=*p-'0';
j=(--len);
num *= 10;
num += k;
return(num);
转换函数应该这样写比较好。
其中你的for语句中,判断条件你写成赋值了
你的while语句是一个死循环,最终会导致变量的值越界。
按你的思路,可以这样改
int chnum(char *p)
int num=0,k,j,len;
len=strlen(p);
for(;*p != '\0';p++)
k=*p-'0';
j=(--len);
int i = j;
while(i > 0)
i--;
k=k*10;
num=num+k;
return(num);
本回答被提问者采纳
请教:C语言中如何将一字符串转换成无符号整型
有符号CHAR的数值范围是-128~127,可是字符的ASCII码怎么会没有负数的呢?自己编个代码看看有没有吧,将整型(正负)转换为字符型,我只知道字符值有255个,是什么字符我就不记得啦!有一些字符时不可打印的,你要知道这个东西。。。。至于UNSIGNEDCHAR,也编个看看吧,要记住用无符号字符型。 参考技术A #include <stdio.h>unsigned long s2d(char *s);
int main(void)
printf("%lu\\n",s2d("123456"));
return 0;
unsigned long s2d(char *s)
unsigned long n=0;
while(*s)
n=n*10+*s-'0';
s++;
return n;
以上是关于C语言将字符串转换为数字出错,请教高手的主要内容,如果未能解决你的问题,请参考以下文章