从一个字符数组中读出相应的整数、实数
// author:yangyang。
//main.c
#include "stdafx.h"
void shishupanduan(int flag);
char s[11];
char *p = s;
void main()
{
gets_s(s);
char zhengshu[10];
int i = 0;
int dianflag=0;//有几个小数点
int dianflaga[10] = { 0 };//每个小数点的位置
int *pdianflaga = dianflaga;//小数点位置数组的指针
int wflag = 1;
while (wflag==1)
{
//输出整数
if ((*p >= '0'&&*p <= '9'))
{
zhengshu[i] = *p;
i++; p++;
}
else if (*p == '.')
{
*(pdianflaga+dianflag) = i;//记录小数点在第几个
dianflag++;//更新小数点个数
p++; i++;
}
//p++;
else if (*p == '\0')//遇到结束标识符退出死循环
{
p = zhengshu;
while (1)
{
for (int j = 0; j < i; j++)
printf("%c", *(p + j));
wflag = 0;
break;
}
}
else
{
//p++; //i++;
}
}
printf("\n");
for (int dd = 0; dd < dianflag; dd++)
{
shishupanduan(*(pdianflaga));
pdianflaga++;
}
}
void shishupanduan(int flag)
{
p = s;
int flag1 = flag;
int flag2 = flag;
for (int k = 0;k<flag; k++) //往前判断是否为整数
{
if (*(p + flag1-1) >= '0'&&*(p + flag1-1) <= '9')//是整数往前移位
{
flag1--;
}
else//不是整数跳出for循环
break;
}
for (int k = 0;k<10-flag; k++)//往后判断是否为整数
{
if (*(p + flag2+1) >= '0'&&*(p + flag2+1) <= '9')//是整数往后移位
{
flag2++;
}
else//不是整数跳出for循环
break;
}
for (int k = flag1 ; k <= flag2; k++)
printf("%c", *(p + k));
printf("\n");
}