如何在 C 语言中把字符串转换为整数
本文介绍了 C 语言中把字符串转换成整数的不同方法。在 C 语言中,有几种将字符串转换为整数的方法,如 atoi()
,strtoumax()
和 strol()
。
atoi()
函数在 C 语言中把一个字符串转换为整数
atoi()
函数在 C 语言编程中把字符串转换成整数。atoi()
函数忽略了字符串开头的所有空格,对空格后的字符进行转换,然后在到达第一个非数字字符时停止。
atoi()
函数返回字符串的整数表示。
我们需要包含 <stdlib.h>
头文件来使用 atoi()
函数。
atoi()
语法
int atoi(const char *str);
*str
是指向要转换为整数的字符串的指针。
atoi()
示例代码
#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\n", str, value);
return(0);
}
输出:
String value=123, Int value=123
strtol()
函数在 C 语言中把一个字符串转换为整数
strtol()
函数在 C 语言中把一个字符串转换成一个长整数。strtol()
函数省略了字符串开头的所有空格字符,在它把后面的字符转换为数字的一部分之后,当它找到第一个不是数字的字符时就停止。
strtol()
函数返回字符串的长整数值表示。
我们需要包含 <stdlib.h>
头文件来使用 atoi()
函数。
strtol()
语法
long int strtol(const char *string, char **laststr,int basenumber);
*string
是指向要转换为长整数的字符串的指针。**laststr
是一个指示转换停止位置的指针。basenumber
是基数,范围为[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\n", value);
return 0;
}
输出:
decimal 123
strtoumax()
函数在 C 语言中将字符串转换为整数
strtoumax()
函数将一个字符串的内容解释为指定基数的整数形式。它省略任何空格字符,直到第一个非空格字符。然后,它尽可能多的字符形成一个有效的基数整数表示,并将它们转换为一个整数值。
strtoumax()
返回一个字符串的相应整数值。如果转换没有成功,该函数返回 0。
strtoumax()
语法
uintmax_t strtoumax(const char* string, char** last, int basenumber);
*string
是指向要转换为长整数的字符串的指针。**last
是一个指示转换停止位置的指针。basenumber
是基数,范围是[2, 36]
。
strtoumax()
示例
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char str[10];
char *ptr;
int value;
strcpy(str, " 123");
printf("The integer value:%d",strtoumax(str, &ptr,10));
return 0;
}
输出:
The long integer value: 123
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn