前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >那些年我们一起忘掉的C (十).数值转字符串

那些年我们一起忘掉的C (十).数值转字符串

作者头像
franket
发布2021-10-18 10:47:21
4560
发布2021-10-18 10:47:21
举报
文章被收录于专栏:技术杂记

前言

模块化是程序设计过程中很重要的思想,将复杂的计算过程外包给其它函数,可以简化代码结构

数字值与字符串的转化包含了最基本的转码思想


概要


数字转化为相应的字符串

写一个函数实现将任意一个正整数(long)转化为一个相应的字符串

如:将 123转化成 “123”。

void num2str(int num,char *str); main(){ ...; char str[20]={0}; r=num2str(1234,str); printf("%s\n",str); }

代码注解

代码语言:javascript
复制
#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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 概要
    • 数字转化为相应的字符串
      • 代码注解
      • 思路
      • 基础知识点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档