模块化是程序设计过程中很重要的思想,将复杂的计算过程外包给其它函数,可以简化代码结构
数字值与字符串的转化包含了最基本的转码思想
写一个函数实现将任意一个正整数(long)转化为一个相应的字符串
如:将 123转化成 “123”。
void num2str(int num,char *str); main(){ ...; char str[20]={0}; r=num2str(1234,str); printf("%s\n",str); }
#include <stdio.h>
#include <string.h>
#define LENGTH 20
char *num2str(long n, char *str) //定义一个数值转字符串的函数,接受一个长整型的数值和一个字符型指针,反馈一个字符型的指针
{
int a,b,i,len; //定义四个整型变量,a用于存放临时数值,b用于存放个位数值,i进行循环控制,len用于存放长度
char *p=str,tmpc; //定义一个字符型指针,和一个字符的临时存放处
for(a=n;a > 0;a/=10,p++) //将数值n从个位开始逐个遍历,并且将指针逐个后移
{
b=a%10; //取出数值的个位数
*p=b+'0'; //将个位数值转为字符值存到指针指示的位置
}
*p='\0'; //字符结尾加上'\0'作为字符串终结符
p=str; //重置指针p到开头
len=strlen(p); //获取字符串长度
for (i=0;i<len/2;i++)
{
tmpc=p[i];
p[i]=p[len-1-i];
p[len-1-i]=tmpc; //翻转字符串,为什么要翻转,因为我们是逐个从低位向高位存储的,排在最前面的其实是个位,注意到没,这里p是一个指针但可以使用了[]来定位元素,其实在c语言里数组名是一个常量地址,指针是一个变量地址,[]是地址运算符,一次增加所属类型占用的字节数
}
return str;
}
main()
{
char str[LENGTH]; //定义一个字符数组来存放字符内容
long num;
printf("please input a number (less then %d length):\n",LENGTH);
scanf("%ld",&num); //将数值存到num中
num2str(num,str); //使用函数进行转换
printf("the number string is %s\n",str);
return 0;
}
将输入的数字进行保存,然后转化翻译为字符串,然后输出
数字字符串中的每一位字符由于代表不同的权重,应该放在正确的位置,在转化为字符串的过程中要将位置考虑在内
原文地址http://soft.dog/2016/11/23/c-basic-10/
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。