精华内容
下载资源
问答
  • #include<stdio.h> int main(){ int n; void fun(int); printf("请输入数字:"); scanf("%d",&n); fun(n); } void fun(int n){ int t; t=n%10; if(n/=10) fun(n); printf("%c ",t+48);......
    #include<stdio.h>
    int main(){
    	int n;
    	void fun(int);
    	printf("请输入数字:");
    	scanf("%d",&n);
    	fun(n);
    }
    void fun(int n){
    	int t;
    	t=n%10;
    	if(n/=10)
    		fun(n);
    	printf("%c ",t+48);
    }
    	
    
    展开全文
  • C语言实现整数转化为字符串 转化函数 整数转化为字符串 char *int_to_str(int x, char *str) { char ch, *p; int sign = 0, r; p = str; if (x < 0) { //处理负数 sign = 1; x = -x; } while (x > ...

    C语言实现整数转化为字符串

    转化函数

    整数转化为字符串

    char *int_to_str(int x, char *str) {
    	char ch, *p;
    	int sign = 0, r;
    	p = str;
    	if (x < 0) {    //处理负数
    		sign = 1;
    		x = -x;   
    	}
    	while (x > 0){		//取余实现倒序
    		r = x % 10;
    		x = x / 10;
    		*p = 48 + r;	
    		p++;
    	}
    	if (sign == 1)
    		*p++ = '-';
    	*p = '\0';
    	return str_reverse_arr(str);	//将字符串逆序得到原先顺序
    }
    //字符串逆置(数组)
    char *str_reverse_arr(char *s) {
    	char t;
    	int low = 0, high = strlen(s) - 1;
    	while (low < high) {
    		t = s[low];
    		s[low] = s[high];
    		s[high] = t;
    		low++;
    		high--;
    	}
    	return s;
    }
    

    main函数

    int main() {
    	char ch[40];
    	int x = -16651623;
    	printf("x = %d\n", x);
    	printf("ch = ");
    	puts(int_to_str(x, ch));
    	return 0;
    }	
    

    输出

    在这里插入图片描述

    展开全文
  • C语言整数转换为字符

    千次阅读 2020-04-09 14:48:25
    各位可能在网上看到用以下函数可以将整数转换为字符串: itoa(); //将整型值转换为字符串 ultoa(); // 将无符号长整型值转换为字符串 请注意,上述函数与ANSI标准是不兼容的,很多编译器根本不提供这几个函数,...

    各位可能在网上看到用以下函数可以将整数转换为字符串:

      itoa(); //将整型值转换为字符串
      ultoa(); // 将无符号长整型值转换为字符串
    

    请注意,上述函数与ANSI标准是不兼容的,很多编译器根本不提供这几个函数,本文就不介绍了,没什么意义。

    将整数转换为字符串而且能与ANSI标准兼容的方法是使用sprintf()和snprintf()函数,在实际开发中,我们也是这么做的。

    1、把整数/长整数格式化输出到字符串

    标准的C语言提供了atoi和atol函数把字符串转换为整数和长整数,但是没有提供把整数/长整数转换为字符串的库函数,而是采用sprintf和snprintf函数格式化输出到字符串。

    函数声明:

    int sprintf(char *str, const char *format, ...);
    int snprintf(char *str, size_t size, const char *format, ...);
    

    示例(book98.c)

    /*
     * 程序名:book98.c,此程序演示格式化输出sprintf和snprintf函数。
     * 作者:C语言技术网(www.freecplus.net) 日期:20190525
    */
    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
      int ii=1024;
      long ll=12345678901234;
      char strii[21],strll[21];
    
      memset(strii,0,sizeof(strii)); memset(strll,0,sizeof(strll));
    
      // 把整数ii转换为字符串,存放在strii中。
      sprintf(strii,"%d",ii);
      printf("strii=%s\n",strii);  // 输出strii=1024
    
      // 把长整数ll转换为字符串,存放在strll中。
      sprintf(strll,"%ld",ll);
      printf("strll=%s\n",strll);  // 输出strll=12345678901234
    
      memset(strii,0,sizeof(strii)); memset(strll,0,sizeof(strll));
    
      // 把整数ii转换为字符串,存放在strii中,只保留前10个字符。
      snprintf(strii,11,"%d",ii);
      printf("strii=%s\n",strii);  // 输出strii=1024
    
      // 把长整数ll转换为字符串,存放在strll中,只保留前10个字符。
      snprintf(strll,11,"%ld",ll);
      printf("strll=%s\n",strll);  // 输出strll=1234567890
    }
    

    运行结果
    在这里插入图片描述

    2、注意事项

    snprintf函数在unix和windows平台下的表现略有不同,在Linux平台下,保留size-1个字符,在windows平台下,保留size个字符。

    3、版权声明

    C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。

    来源:C语言技术网(www.freecplus.net

    作者:码农有道

    如果这篇文章对您有帮助,请点赞支持,或在您的博客中转发我的文章,谢谢。

    展开全文
  • C语言 整数字符串的相互转换

    万次阅读 多人点赞 2018-06-26 23:22:57
    C语言 整数字符串的相互转换 一、简述  C语言整数字符串的相互转换,有广泛应用的拓展函数(非标准库),也可以自己尝试简单的实现。 二、整数字符串  1、拓展函数itoa  itoa (表示 integer to ...

    C语言 整数与字符串的相互转换

    一、简述

        C语言中整数与字符串的相互转换,有广泛应用的拓展函数(非标准库),也可以自己尝试简单的实现。

    二、整数转字符串

        1、拓展函数itoa

        itoa (表示 integer to alphanumeric)是把整型数转换成字符串的一个函数。

          windows环境下,在<stdlib.h>头文件中有

    char* itoa(int value,char*string,int radix);//value: 要转换的整数,string: 转换后的字符串,radix: 转换进制数,如2,8,10,16 进制等。

    函数源码:

    char* itoa(int num,char* str,int radix)
    {
    	char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//索引表
    	unsigned unum;//存放要转换的整数的绝对值,转换的整数可能是负数
    	int i=0,j,k;//i用来指示设置字符串相应位,转换之后i其实就是字符串的长度;转换后顺序是逆序的,有正负的情况,k用来指示调整顺序的开始位置;j用来指示调整顺序时的交换。
    
    	//获取要转换的整数的绝对值
    	if(radix==10&&num<0)//要转换成十进制数并且是负数
    	{
    		unum=(unsigned)-num;//将num的绝对值赋给unum
    		str[i++]='-';//在字符串最前面设置为'-'号,并且索引加1
    	}
    	else unum=(unsigned)num;//若是num为正,直接赋值给unum
    
    	//转换部分,注意转换后是逆序的
    	do
    	{
    		str[i++]=index[unum%(unsigned)radix];//取unum的最后一位,并设置为str对应位,指示索引加1
    		unum/=radix;//unum去掉最后一位
    
    	}while(unum);//直至unum为0退出循环
    
    	str[i]='\0';//在字符串最后添加'\0'字符,c语言字符串以'\0'结束。
    
    	//将顺序调整过来
    	if(str[0]=='-') k=1;//如果是负数,符号不用调整,从符号后面开始调整
    	else k=0;//不是负数,全部都要调整
    
    	char temp;//临时变量,交换两个值时用到
    	for(j=k;j<=(i-1)/2;j++)//头尾一一对称交换,i其实就是字符串的长度,索引最大值比长度少1
    	{
    		temp=str[j];//头部赋值给临时变量
    		str[j]=str[i-1+k-j];//尾部赋值给头部
    		str[i-1+k-j]=temp;//将临时变量的值(其实就是之前的头部值)赋给尾部
    	}
    
    	return str;//返回转换后的字符串
    }

     

    示例程序:

     

    #include <stdlib.h>
    #include <stdio.h>
    int main()
    {
    	int number1 = 123456;
    	int number2 = -123456;
    	char string[16] = {0};
    	itoa(number1,string,10);
    	printf("数字:%d 转换后的字符串为:%s\n",number1,string);
    	itoa(number2,string,10);
    	printf("数字:%d 转换后的字符串为:%s\n",number2,string);
    	return 0;
    }

     

    效果截图:

     

    2、自己简单实现

    实现代码

    
    #include <stdio.h>
    
    char* Int2String(int num,char *str);//函数声明 
    int main()
    {
    	int number1 = 123456;
    	int number2 = -123456;
    	char string[16] = {0};
    	Int2String(number1,string);
    	printf("数字:%d 转换后的字符串为:%s\n",number1,string);
    	Int2String(number2,string);
    	printf("数字:%d 转换后的字符串为:%s\n",number2,string);
    	return 0;
    }
    
    char* Int2String(int num,char *str)//10进制 
    {
    	int i = 0;//指示填充str 
    	if(num<0)//如果num为负数,将num变正 
    	{
    		num = -num;
    		str[i++] = '-';
    	} 
    	//转换 
    	do
    	{
    		str[i++] = num%10+48;//取num最低位 字符0~9的ASCII码是48~57;简单来说数字0+48=48,ASCII码对应字符'0' 
    		num /= 10;//去掉最低位	
    	}while(num);//num不为0继续循环
    	
    	str[i] = '\0';
    	
    	//确定开始调整的位置 
    	int j = 0;
    	if(str[0]=='-')//如果有负号,负号不用调整 
    	{
    		j = 1;//从第二位开始调整 
    		++i;//由于有负号,所以交换的对称轴也要后移1位 
    	}
    	//对称交换 
    	for(;j<i/2;j++)
    	{
    		//对称交换两端的值 其实就是省下中间变量交换a+b的值:a=a+b;b=a-b;a=a-b; 
    		str[j] = str[j] + str[i-1-j];
    		str[i-1-j] = str[j] - str[i-1-j];
    		str[j] = str[j] - str[i-1-j];
    	} 
    	
    	return str;//返回转换后的值 
    }

    效果截图

    三、字符串转整数

    1、拓展函数
                atoi (表示 alphanumeric to integer)是把字符串转换成整型数的一个函数。
                windows环境下,在<stdlib.h>头文件中

    int  atoi(const char *nptr);//字符串转整数函数,nptr: 要转换的字符串

    源码:

    int  atoi(const char *nptr)
    {
            return (int)atol(nptr);
    }
     
    long  atol(const char *nptr)
    {
            int c;              /* 当前要转换的字符(一个一个字符转换成数字) */
            long total;         /* 当前转换结果 */
            int sign;           /* 标志转换结果是否带负号*/
     
            /*跳过空格,空格不进行转换*/
            while ( isspace((int)(unsigned char)*nptr) )
                ++nptr;
     
            c = (int)(unsigned char)*nptr++;//获取一个字符准备转换 
            sign = c;           /*保存符号标示*/
            if (c == '-' || c == '+')
                c = (int)(unsigned char)*nptr++;    /*跳过'+'、'-'号,不进行转换*/
     
            total = 0;//设置转换结果为0 
     
            while (isdigit(c)) {//如果字符是数字 
                total = 10 * total + (c - '0');     /* 根据ASCII码将字符转换为对应的数字,并且乘10累积到结果 */
                c = (int)(unsigned char)*nptr++;    /* 取下一个字符 */
            }
     
     		//根据符号指示返回是否带负号的结果 
            if (sign == '-')
                return -total;
            else
                return total;  
    }

     

    示例程序:

    #include<stdio.h>
    #include<stdlib.h> 
    
    int main()
    {
    	printf("字符串\"123456\"转换为数字:%d\n",atoi("123456"));
    	printf("字符串\"-123456\"转换为数字:%d\n",atoi("-123456"));
    	return 0;
    }


    效果截图:

     

     

    2、自己简单实现

     

     

    实现源码

    #include<stdio.h>
    
    int String2Int(char *str);//函数声明 
    int main()
    {
    	printf("字符串\"123456\"转换为数字:%d\n",String2Int("123456"));
    	printf("字符串\"-123456\"转换为数字:%d\n",String2Int("-123456"));
    	return 0;
    }
    
    int String2Int(char *str)//字符串转数字 
    {
    	char flag = '+';//指示结果是否带符号 
    	long res = 0;
    	
    	if(*str=='-')//字符串带负号 
    	{
    		++str;//指向下一个字符 
    		flag = '-';//将标志设为负号 
    	} 
    	//逐个字符转换,并累加到结果res 
    	while(*str>=48 && *str<57)//如果是数字才进行转换,数字0~9的ASCII码:48~57 
    	{
    		res = 10*res+  *str++-48;//字符'0'的ASCII码为48,48-48=0刚好转化为数字0 
    	} 
    
        if(flag == '-')//处理是负数的情况
    	{
    		res = -res;
    	}
    
    	return (int)res;
    }
    

     

    截图

     

    四、利用sprintf()函数和sscanf()函数    

           整数转字符串

           测试代码:

             

    #include <stdio.h>
    
    char* Int2String(int num,char *str);//函数声明 
    int main()
    {
    	int number1 = 123456;
    	int number2 = -123456;
    	char string[16] = {0};
    	Int2String(number1,string);
    	printf("数字:%d 转换后的字符串为:%s\n",number1,string);
    	Int2String(number2,string);
    	printf("数字:%d 转换后的字符串为:%s\n",number2,string);
    	return 0;
    }
    
    char* Int2String(int num,char *str)
    {
    	sprintf(str, "%d", num);
    
    	return str;
    
    }
    

           运行结果:

           字符串转整数

           测试代码:

    #include<stdio.h>
    
    int String2Int(char *str);//函数声明 
    int main()
    {
    	printf("字符串\"123456\"转换为数字:%d\n",String2Int("123456"));
    	printf("字符串\"-123456\"转换为数字:%d\n",String2Int("-123456"));
    	return 0;
    }
    
    int String2Int(char *str)//字符串转数字 
    {
    	char flag = '+';//指示结果是否带符号 
    	long res = 0;
    	
    	if(*str=='-')//字符串带负号 
    	{
    		++str;//指向下一个字符 
    		flag = '-';//将标志设为负号 
    	} 
    	
    	sscanf(str, "%ld", &res);
    	if(flag == '-')
    	{
    		res = -res;
    	}
    	return (int)res;
    }

           运行结果:

           

    五、附ASCII码表(部分)

     

    ASCII值控制字符ASCII值控制字符ASCII值控制字符ASCII值控制字符
    0NUT32(space)64@96
    1SOH33!65A97a
    2STX34"66B98b
    3ETX35#67C99c
    4EOT36$68D100d
    5ENQ37%69E101e
    6ACK38&70F102f
    7BEL39,71G103g
    8BS40(72H104h
    9HT41)73I105i
    10LF42*74J106j
    11VT43+75K107k
    12FF44,76L108l
    13CR45-77M109m
    14SO46.78N110n
    15SI47/79O111o
    16DLE48080P112p
    17DCI49181Q113q
    18DC250282R114r
    19DC351383S115s
    20DC452484T116t
    21NAK53585U117u
    22SYN54686V118v
    23TB55787W119w
    24CAN56888X120x
    25EM57989Y121y
    26SUB58:90Z122z
    27ESC59;91[123{
    28FS60<92/124|
    29GS61=93]125}
    30RS62>94^126`
    31US63?95_127DEL

     

    展开全文
  • C语言整数转换字符的方法

    千次阅读 2019-06-05 09:40:06
    C语言整数转换字符的方法 char* int_to_change(int i) { int j,buf,a; char* buffer[10]; while(1) { j = i%10; j += 48; buffer[a] = j; i = i/10; a++; if(j == 0) break; } return buffer; }
  • c语言中将整数转换字符串Conversion from integer to string and from string to integer are common operations in most applications such as C++. ...
  • c语言中将整数转化为字符While working on the embedded programming, if you need to assign an integer value to the character buffer and character buffer (that contain integer value in hexadecimal format)...
  • 我们常用到的有以下几种:1、itoa功 能:把一整数转换为字符串用 法:char *itoa(int value, char *string, int radix);详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)...
  • C语言 整数字符串和小数转字符串。
  • #include#includeint power(int a, int n){return pow((double)a, n);}#define pow powerint main(){int x, n, k, i, z, y;char a[100] = {}; //清零scanf("%d",&x);for(n=0;;n++){if(pow(10, n) <...
  •  功 能:把一整数转换为字符串  用 法:char *itoa(int value, char *string, int radix);  详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.  参数:  ...
  • 编译环境:Dev-C++ 5.2.0.3使用sprintf()函数实现转换,代码如下:#include #include int main(int argc, char* argv[]){int num;printf("Enter ainteger number:");scanf("%d", &num);char ch[10]={0};sprintf...
  • c语言中将整数转换字符串Java programming language provides different variable types. One of the most used types is String and Int or integer. During the usage of these variable types, we may need to ...
  • C语言将正整数转换为字符C语言将正整数转换为字符串完整源码 C语言将正整数转换为字符串完整源码 #include <assert.h> #include <inttypes.h> #include <stdio.h> #include <stdlib.h> #...
  • c语言中将整数转换字符串Given an ASCII string (char[]) and we have to convert it into Hexadecimal string (char[]) in C. 给定一个ASCII字符串(char []),我们必须在C中将其转换为十六进制字符串(char [])。...
  • 直接将整数转换保存至字符串中,求余数,并保存,直到数据零 目前,不考虑负数,因为功率均正数,需要在上层函数,进行数据的判断。 ***********************************************************************...
  •  功 能:把一整数转换为字符串  用 法:char *itoa(int value, char *string, int radix);  详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.  参数:  ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 83,754
精华内容 33,501
关键字:

c语言整数转化为字符

c语言 订阅