从一个字符数组中取出相应的整数、实数
来源:互联网 发布:hbulider js无法跳转 编辑:程序博客网 时间:2024/05/24 15:43
/*
功能:从一个字符数组中取出相应的整数、实数
作者:班草
*/
#include <stdio.h>
#include <malloc.h>
#include <math.h>
void read_num( char *str , int *read_int , double *read_double);
int main()
{
char *str = NULL;
int *read_int = NULL;
double *read_double = NULL;
str = (char *)malloc(sizeof(char)*1024); //分配堆空间
read_int = (int *)malloc(sizeof(int)*1024);
read_double = (double *)malloc(sizeof(double)*1024);
printf("input string:"); //输入字符串
scanf("%s",str);
read_num( str , read_int , read_double ); //调用函数
int i = 0;
printf("int :"); //输出整型
for( i = 1 ; i <= read_int[0] ; i ++ )
{
printf("\t%d",read_int[i]);
}
printf("\n");
printf("double:"); //输出实型
for( i = 1 ; i <= (int)read_double[0] ; i++ )
{
printf("\t%g",read_double[i]);
}
printf("\n");
free(str); //释放堆空间
str = NULL;
free(read_int);
read_int = NULL;
free(read_double);
read_double = NULL;
return 0;
}
void read_num( char *str , int *read_int , double *read_double )
{
int flag = 1; //正负符号变量
int read = 0; //读标志,为1时表示读取到值
int i_int = 1; //整形数组的下标
int i_double = 1; //实形数组的下标
read_int[0] = 0; //数组第一个数,表示读取到的值的数量
read_double[0] = 0;
int x = 0;
int u = 0;
int zi = 0; //这三个变量用于将字符串数字转换为整形
double fzi = 0.0; //存放小数点后的数值
while( *str != '\0' ) //遍历字符串
{
if( *str == '-' ) //判断是否为负号,
{
flag = -1;
str ++;
}
for( x = 0 ; *str >= '0' && *str <= '9' ; x++ , str ++ ) //读取字符串中一段连续的数字,转换为整型
{ //如125.6,读出为125
u = *str - '0';
if( x == 0 )
{
zi = u;
}
else
{
zi = zi * 10 + u;
}
read = 1;
}
if( *str == '.' && read == 1 ) //如果遇到小数点且小数点前为数字
{
str ++;
for( x = 0 ; *str >= '0' && *str <= '9' ; x++ , str ++ )//读小数点后的值
{
u = *str - '0';
if( x == 0 )
{
fzi =(double)u / pow(10,x+1);
}
else
{
fzi += (double)u / pow(10,x+1);
}
}
if( fzi != 0.0 ) //如果小数点后读到了值,将其值转换为对应的实数然后加上前面的整数,存放到实型数组
{
read_double[0]++;
read_double[i_double++] = (zi + fzi) * flag;
read = 0;
}
}
if( read == 1) //判断是否读到值
{
read_int[0]++;
read_int[i_int++] = zi * flag;
read = 0;
}
flag = 1;
}
}
功能:从一个字符数组中取出相应的整数、实数
作者:班草
*/
#include <stdio.h>
#include <malloc.h>
#include <math.h>
void read_num( char *str , int *read_int , double *read_double);
int main()
{
char *str = NULL;
int *read_int = NULL;
double *read_double = NULL;
str = (char *)malloc(sizeof(char)*1024); //分配堆空间
read_int = (int *)malloc(sizeof(int)*1024);
read_double = (double *)malloc(sizeof(double)*1024);
printf("input string:"); //输入字符串
scanf("%s",str);
read_num( str , read_int , read_double ); //调用函数
int i = 0;
printf("int :"); //输出整型
for( i = 1 ; i <= read_int[0] ; i ++ )
{
printf("\t%d",read_int[i]);
}
printf("\n");
printf("double:"); //输出实型
for( i = 1 ; i <= (int)read_double[0] ; i++ )
{
printf("\t%g",read_double[i]);
}
printf("\n");
free(str); //释放堆空间
str = NULL;
free(read_int);
read_int = NULL;
free(read_double);
read_double = NULL;
return 0;
}
void read_num( char *str , int *read_int , double *read_double )
{
int flag = 1; //正负符号变量
int read = 0; //读标志,为1时表示读取到值
int i_int = 1; //整形数组的下标
int i_double = 1; //实形数组的下标
read_int[0] = 0; //数组第一个数,表示读取到的值的数量
read_double[0] = 0;
int x = 0;
int u = 0;
int zi = 0; //这三个变量用于将字符串数字转换为整形
double fzi = 0.0; //存放小数点后的数值
while( *str != '\0' ) //遍历字符串
{
if( *str == '-' ) //判断是否为负号,
{
flag = -1;
str ++;
}
for( x = 0 ; *str >= '0' && *str <= '9' ; x++ , str ++ ) //读取字符串中一段连续的数字,转换为整型
{ //如125.6,读出为125
u = *str - '0';
if( x == 0 )
{
zi = u;
}
else
{
zi = zi * 10 + u;
}
read = 1;
}
if( *str == '.' && read == 1 ) //如果遇到小数点且小数点前为数字
{
str ++;
for( x = 0 ; *str >= '0' && *str <= '9' ; x++ , str ++ )//读小数点后的值
{
u = *str - '0';
if( x == 0 )
{
fzi =(double)u / pow(10,x+1);
}
else
{
fzi += (double)u / pow(10,x+1);
}
}
if( fzi != 0.0 ) //如果小数点后读到了值,将其值转换为对应的实数然后加上前面的整数,存放到实型数组
{
read_double[0]++;
read_double[i_double++] = (zi + fzi) * flag;
read = 0;
}
}
if( read == 1) //判断是否读到值
{
read_int[0]++;
read_int[i_int++] = zi * flag;
read = 0;
}
flag = 1;
}
}
阅读全文
0 0
- 从一个字符数组中取出相应的整数、实数
- 从一个字符数组中读出相应的整数、实数
- 从一个字符数组中读出相应的整数、实数
- 从一个字符数组中读出相应的整数,实数
- 从一个字符数组中读出相应的整数、实数
- 从一个字符数组中读出相应的整数、实数
- 从一个字符数组中读出相应的整数、实数
- 从一个字符数组中读出相应的整数、实数
- 从一个字符数组中读出相应的整数、实数
- C语言编程练习——从一个字符数组中读出相应的整数、实数
- 从一个字符数组中读出相应的整数、实数 例如:char cStringArray[10] = {1,2.3,45.6,7.89}
- 从一个字符数组中读出相应的整数、实数(有点问题,待调试,求大神帮忙)
- 编程练习2——01从一个字符数组中读出相应的整数、实数 例如qwe32.56dgh456ml9.4sad 应该输出 32.56 456 19.4
- 将整数转换为相应的一个字符数组
- 黑马程序员之C#编程基础学习笔记:从一个整数数组中取出最大的整数。
- 将整数转换为相应的一个字符数组。 分析:从个位提取数字,组合字符 符号位的处理 12345=>"12345"
- 将整数转换为相应的一个字符数组。 分析:从个位提取数字,组合字符 符号位的处理 12345=>"12345"
- 将整数转换为相应的一个字符数组。 分析:从个位提取数字,组合字符 符号位的处理 12345=>"12345"
- SoapUI接口测试工具学习笔记整理
- Leetcode 384 Shuffle an Array
- 【教程】记录:python基础爬虫代码(下载妹子福利图片)
- 关于微信聊天中的语音开发
- 一起来存方法
- 从一个字符数组中取出相应的整数、实数
- kafka常用命令总结
- FAFU OJ 简单求和
- 七牛云鉴黄实现
- 16、分区与文件系统
- easyUI学习
- 机器学习之路的开始
- gulp编译
- thread45