字符串与整型互相转化的库函数

将字符串转化成整型:

1、atoi,在stdlib.h

 int atoi(const char *str);

作用:
把参数 str 所指向的字符串转换为一个整数(类型为 int 型)
参数:
str – 要转换为整数的字符串
返回值
该函数返回转换后的长整数,如果没有执行有效的转换,则返回零。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
   int val;
   char str[20];

   strcpy(str, "98993489");
   val = atoi(str);
   printf("字符串值 = %s, 整型值 = %d\n", str, val);

   strcpy(str, "runoob.com");
   val = atoi(str);
   printf("字符串值 = %s, 整型值 = %d\n", str, val);

   return(0);
}

结果

2、strtol,在 stdlib.h

long int strtol(const char *str, char **endptr, int base) ;

作用:
把参数 str 所指向的字符串根据给定的 base 转换为一个长整数(类型为 long int 型),base 必须介于 2 和 36(包含)之间,或者是特殊值 0。
参数:
str:要转换为长整数的字符串。
endptr:对类型为 char* 的对象的引用,其值由函数设置为 str 中数值后的下一个字符。若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回;若参数endptr为NULL,则会不返回非法字符串
base:基数,必须介于 2 和 36(包含)之间,或者是特殊值 0。
返回值:
该函数返回转换后的长整数,如果没有执行有效的转换,则返回一个零值。

#include <stdio.h>
#include <stdlib.h>

int main()
{
   char str[30] = "2030300 This is test";
   char *ptr;
   long ret;

   ret = strtol(str, &ptr, 10);
   printf("数字(无符号长整数)是 %ld\n", ret);
   printf("字符串部分是 |%s|", ptr);

   return(0);
}

这里写图片描述


将整型转化成字符串:

1、sprintf,在string.h

#include <string.h>

int sprintf( char *buffer, const char *format, [ argument] … );

参数列表
buffer:char型指针,指向将要写入的字符串的缓冲区。
format:格式化字符串。
[argument]…:可选参数,可以是任何类型的数据。
返回值
返回写入buffer 的字符数,出错则返回-1. 如果 buffer 或 format 是空指针,且不出错而继续,函数将返回-1,并且 errno 会被设置为 EINVAL。
sprintf 返回以format为格式argument为内容组成的结果被写入buffer 的字节数,结束字符‘\0’不计入内。即,如果“Hello”被写入空间足够大的buffer后,函数sprintf 返回5。

char temp[10] = {0};
int a = 1234;
int len;
len = sprintf(temp, "%d", a);

2、itoa,在 stdlib.h

char*itoa(int value,char*string,int radix);

参数:
int value:被转换的整数
char *string:转换后储存的字符数组
int radix:转换进制数,如2,8,10,16 进制等

#include <stdlib.h>
#include <stdio.h>
int main(void)
{
    int number=123456;
    char string[25];

    itoa(number,string,10);

    printf("integer=%d string=%s\n",number,string);
    return0;
}

猜你喜欢

转载自blog.csdn.net/Hola_ya/article/details/81347676