编程参考 - C语言中将字符串转换为整数(转)

C语言,主要有两种方法可以将字符串转为整数:atoi() 和 strtol()。

1,atoi()

Syntax:

int atoi(const char *str);

包含的头文件是:stdlib.h

给定字符串的开头的空格会被忽略,从空格之后的字符开始转换,直到遇到第一个非数字的字符。

返回值就是转换后的结果。

例子:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main (void)

{

int value;

char str[20];

strcpy(str,"123");

value = atoi(str);

printf("String value = %s, Int value = %d ", str, value);

return(0);

}

Output:

String value=123, Int value=123

如果转换失败,则返回0.

2,strtol()

Syntax:

long int strtol(const char *string, char **laststr,int basenumber);

包含的头文件是:stdlib.h

将一个字符串转换为长整型数。字符串开头的空格会忽略。当遇到第一个非数字字符时停止转换。

第一个参数是要转换的字符串,第二个是输出转换停止时的字符串位置,第三个是使用的进制,范围是2 ~ 36

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main(void){

char str[10];

char *ptr;

long value;

strcpy(str, " 123");

value = strtol(str, &ptr, 10);

printf("decimal %ld ", value);

return 0;

}

Output:

decimal 123

如果转换失败,则返回0.

如果是16进制,则使用字母A~F,表示10~15.

如果是17进制,则使用字母A~G,表示10~16.

如果是16进制,传入字符串“FFF”,“0xFFF” 和 “0XFFF”,结果是一样的。

而atoi相当于:(int) strtol(str, (char **)NULL, 10)。

3,一些其他方法

还有一些其他函数,比如 strtoumax, strtoimax, strtonum.

但这几个函数可能移植有问题,不是所有的C编译器都支持。

参考:

————————————————

C语言,主要有两种方法可以将字符串转为整数:atoi() 和 strtol()。 1,atoi() Syntax: int atoi(const char *str); 包含的头文件是:stdlib.h 给定字符串的开头的空格会被忽略,从空格之后的字符开始转换,直到遇到第一个非数字的字符。 返回值就是转换后的结果。 例子: #include #include #include int main (void) { int value; char str[20]; strcpy(str,"123"); value = atoi(str); printf("String value = %s, Int value = %d ", str, value); return(0); } Output: String value=123, Int value=123 如果转换失败,则返回0. 2,strtol() Syntax: long int strtol(const char *string, char **laststr,int basenumber); 包含的头文件是:stdlib.h 将一个字符串转换为长整型数。字符串开头的空格会忽略。当遇到第一个非数字字符时停止转换。 第一个参数是要转换的字符串,第二个是输出转换停止时的字符串位置,第三个是使用的进制,范围是2 ~ 36 #include #include #include int main(void){ char str[10]; char *ptr; long value; strcpy(str, " 123"); value = strtol(str, &ptr, 10); printf("decimal %ld ", value); return 0; } Output: decimal 123 如果转换失败,则返回0. 如果是16进制,则使用字母A~F,表示10~15. 如果是17进制,则使用字母A~G,表示10~16. 如果是16进制,传入字符串“FFF”,“0xFFF” 和 “0XFFF”,结果是一样的。 而atoi相当于:(int) strtol(str, (char **)NULL, 10)。 3,一些其他方法 还有一些其他函数,比如 strtoumax, strtoimax, strtonum. 但这几个函数可能移植有问题,不是所有的C编译器都支持。 参考: ————————————————
经验分享 程序员 微信小程序 职场和发展