#include<stdio.h>
//"12345"转12345
//12345转"12345"
int ToNum(char *str)
{
char *istr = str;//保留副本
int num = 0;
while (*str!='\0')//当字符串等于\0的时候就结束了
{
if (*str<'0' || *str>'9')//如果不是数字,返回-1,转换失败
{
return -1;
}
//printf("%c\n",*str);//取出每一个字符
*str++;//地址先++,再根据地址取出数据,str和++先结合
num++;//求出位数
}
printf("%d\n",num);
int lastres = 0;//最终结果
for (int i = 0; i < num; i++)
{
lastres *= 10;
int EveryDigit = istr[i] - 48;//str[1]是'1',是49
lastres += EveryDigit;
printf("每一位上的数字是%d\n",EveryDigit);
}
return lastres;
}
void main2()//字符串转换成数字
{
char str[10] = "1234567";
int num = 0;
printf("%d\n", ToNum(str));
system("pause");
}
void main1()
{
printf("%d,%c\n", 1, '1');//1数字 '1'字符
printf("%d,%c\n",'1',1);//'1'代表'1'的ASC码编号49,1 ASC码编号001对应的SQH
printf("%d",'1'-1);//等于48
getchar();
}
void main3()//数字转换成字符串
{
int num = 1234567;
char str[10] = { 0 };//编号为0的字符,初始化字符串
int digits = 0;
for (int inum = num; inum; inum /= 10)
{
digits++;
}
printf("digits=%d\n",digits);
//for (; num; num /= 10)
//{
// printf("%d", num % 10);//逆序输出
//}
for (int i = digits-1; num; num /= 10, i--)//把num%10倒序存入str[i]
{
str[i] = num % 10 + 48;
printf("%d,i=%d\n", num%10, i);
}
printf("%s",str);
/*for (int i = 0; i < digits; i++)
{
printf("\n%c",str[i]);
}
getchar();*/
}
void ToStr(int num, char *str)//把上面的整数转字符串封装成函数
{
int digits = 0;
for (int inum = num; inum; inum /= 10)//注意是/=不是/
{
digits++;
}
printf("这个数字有%d位",digits);
for (int i=digits-1;num;num/=10,i--)//注意是/=不是/
{
str[i] = num % 10 + 48;
}
}
void main()//使用ToStr函数
{
int a = 123456;
char str[10] = { 0 };
ToStr(a, str);
printf("%s", str);
getchar();
}
整数字符串转换
最新推荐文章于 2022-12-27 10:55:51 发布