C语言教程
C语言控制语句
C语言函数
C语言数组
C语言指针
C语言字符串
C语言数学函数
C语言结构
C语言文件处理
C预处理器

C语言itoa函数

itoa()函数用于将int数据类型转换为C语言中的字符串数据类型。

语法-

char * itoa ( int value, char * str, int base );
我们在缓冲区传递中放置的字符串必须足够大以容纳输出。由于基数的值可以是OCTAL(0-7),DECIMAL(0-9)或HEX(0-9,a-f)。当基数为DECIMAL时,itoa()生成-
(void)sprintf(buffer,"%d",n);
此处,buffer返回字符串。
当基数为OCTAL时,itoa()将整数'n'格式化为无符号八进制常数。
当基数为HEX时,itoa()将整数'n'格式化为无符号十六进制常量。
十六进制值将包含小写字母。

返回值-

将返回字符串指针。当我们传递无效的基数参数时,该函数将返回NULL。
符合标准的替代方法-
sprintf(str,"%d",value)-用于转换为十进制基数。 sprintf(str,"%x",value)-用于转换为十六进制基数。 sprintf(str,"%o",value)-用于转换为八进制。
算法:
Step 1: Take a number as argument
Step 2: Create an empty string buffer to store result
Step 3: Use sprintf() to convert number to string
Step 4: End
代码-
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
char* itoa(int num, char* buffer, int base) 
{
int current = 0;
if (num == 0) {
buffer[current++] = '0';
buffer[current] = '\0';
return buffer;
}
int num_digits = 0;
if (num < 0) {
if (base == 10) {
num_digits ++;
buffer[current] = '-';
current ++;
num *=-1;
}
else
return NULL;
}
num_digits += (int)floor(log(num) / log(base)) + 1;
while (current < num_digits) 
{
int base_val = (int) pow(base, num_digits-1-current);
int num_val = num / base_val;
 char value = num_val + '0';
buffer[current] = value;
current ++;
num-= base_val * num_val;
}
buffer[current] = '\0';
return buffer;
}
int main() 
{
int a = 123456;
char buffer[256];
if (itoa(a, buffer, 10) != null) {
printf("Input = %d, base = %d, Buffer = %s\n", a, 10, buffer);
}
int b =-2310;
if (itoa(b, buffer, 10) != null) {
printf("Input = %d, base = %d, Buffer = %s\n", b, 10, buffer);
}
int c = 10;
if (itoa(c, buffer, 2) != null) {
printf("Input = %d, base = %d, Buffer = %s\n", c, 2, buffer);
}
return 0;
}
输出
Input = 123456, base = 10, Buffer = 123456
Input =-2310, base = 10, Buffer =-2310 
Input = 10, base = 2, Buffer = 1010
itoa C语言中的函数
注意: 但是我们必须记住,在使用gcc进行编译时,必须使用'-lm'标志来包括数学库。

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4