将字符串转化成整型:
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;
}