c语言中如何将short,int,long,float这些类型的数值转换为字符串?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中如何将short,int,long,float这些类型的数值转换为字符串?相关的知识,希望对你有一定的参考价值。

可以使用sprintf函数转换。

1、对于整型,各个平台有一些函数可以专门转换,比如itoa等。

不过更通用的做法是使用sprintf函数。 

2、声明:

int sprintf(char *dst, const char *format_string, ...);

头文件为stdio.h。

3、功能:

sprintf是一个不定参数函数,根据format_string中提供的格式符,将后续参数转为字符串存储在第一个参数dst中。

4、使用示例:

short a=1;
int b=2;
long c=3;
float d=4;
char buf[100];
sprintf(buf, "%hd %d %ld %f",a,b,c,d);//按照格式,将四个变量存储在字符串中。

执行后,buf中字符串为"1 2 3 4.000000"。

格式字符串使用方法与输出函数printf相同。 

参考技术A

这些都是  整数  型的,所以把每一位拿出来放到char数组里面就好

#include<stdio.h>
#define LEN 20
int main()

int i;
int num;     //要转换的数字,以int为例
int len;     //存储该数字有几位
char temp[LEN], ans[LEN];
scanf("%d", &num);
len = 0;
while(num)      //每次取出个位数,直到变成0

int geWei = num % 10;   //个位数
int ch = geWei + '0';   //转换为char型
temp[len] = ch;
len++;
num /= 10;

for(i=0; i<len; i++)   //刚才是倒着存的,现在要倒回来
ans[i] = temp[len - i - 1];
ans[len] = 0;            //字符串最后要加0
printf("%s\\n", ans);
return 0;

参考技术B 用sprintf函数即可。例如
char s[20];
short a=35;
sprintf(s,"%d",a);就把s的值赋为“35”了。
参考技术C int i = 105:
char str[100] = 0;
sprintf(str, "%d", i);
其他类型变量的方法类似

将 Long 转换为 Unsigned Short Int / Strtol

【中文标题】将 Long 转换为 Unsigned Short Int / Strtol【英文标题】:Casting Long to Unsigned Short Int / Strtol 【发布时间】:2018-04-01 17:40:31 【问题描述】:

没有编译错误。然而,结果并不出人意料。我怀疑将 long 转换为 unsigned short int 会导致错误。我如何安全地将 Hex 的多头转换为空头? [要求:将一行字符串(有数字)转换为无符号短整数] 谢谢!

unsigned short int str_to_bin (char* instr_bin_str) 
    unsigned short int i = 0;
    long j;
    char* ptr;

    j = strtol (instr_bin_str, &ptr, 10);

    if (j == 0) 
        fprintf (stderr, "error6: str_to_bin() failed");
        return 6;
    

    i = (unsigned short) j;
    printf("State: 0x%X \n", i);

    return i;
  

【问题讨论】:

你的输入、预期输出和实际输出是多少? 请注意,如果您不打算使用ptr,则可以将NULL 传递给strtol 如果给定的字符串是:0001001000000001,那么输出应该是 0x1201(通过 printf)。但是,我得到 0xDA01。 如果输入字符串是二进制的,那么10 是不正确的。 你的字面意思是strtol (instr_bin_str, &amp;ptr, 10),其中10 的意思是“base-10”或十进制,并期望它将输入视为二进制...跨度> 【参考方案1】:

您传入的字符串是数字的二进制表示。但是,当您调用 strtol 时,您为第三个参数传入 10,这意味着它需要一个十进制表示形式的字符串。

如果您期待二进制,您需要告诉strtol 期待:

j = strtol (instr_bin_str, &ptr, 2);

【讨论】:

以上是关于c语言中如何将short,int,long,float这些类型的数值转换为字符串?的主要内容,如果未能解决你的问题,请参考以下文章

关于C语言 的__int64 的:如何输出从键盘读入的__int64 变量 问题

C语言中short与int有啥区别

32位和64位系统,C语言中char,short,int,long,char*,int*,int**各占多少字节

计算机C语言中int和short还有long有啥区别,啥时候用int,啥时候用其他的?

short型与int型的区别

C语言中int short long 的具体区别是啥?