1、使用 atoi() (ASCII 到整数)
最简单的将字符串转换为整数的方法是使用 atoi()
(ASCII to Integer)函数。这个函数在 库中声明。
int atoi(const char *str);
str
是要转换的字符串,表示要转换的数字。
返回值是返回与字符串对应的整数。如果字符串不是有效的整数,atoi()
返回 0
。
#include <stdio.h> #include <stdlib.h> int main() { const char *str = "1234"; int num = atoi(str); printf("转换后的整数: %d\n", num); return 0; }
2、使用 strtol() (字符串到长整数)
一个更稳健和安全的将字符串转换为整数的方法是使用 strtol()
。这个函数同样在 中声明。它可以指定进制(例如,十进制、十六进制),并通过额外的参数提供错误处理。
long int strtol(const char *str, char **endptr, int base);
str
是要转换的字符串。
endptr
是一个指向指针的指针,转换结束时它指向剩余未转换的部分(有助于错误处理)。
base
是指定转换的进制。例如,10
表示十进制,16
表示十六进制。
返回值是返回转换后的长整数。如果字符串不是有效的数字,它会返回 0
并将 endptr
设置为指向第一个无效字符。
#include <stdio.h> #include <stdlib.h> int main() { const char *str = "1234abc"; char *end; long num = strtol(str, &end, 10); printf("转换后的整数: %ld\n", num); printf("剩余字符串: %s\n", end); return 0; }
3、使用 sscanf() (字符串扫描)
另一个将字符串转换为整数的方法是使用 sscanf()
函数。该函数在 中声明,当需要按照特定的格式解析字符串时,它非常有用。
int sscanf(const char *str, const char *format, ...);
str
是要读取的输入字符串。
format
是格式说明符(例如,%d
表示整数)。
...
是用于存储转换结果的变量。
返回值是成功读取的项数。如果发生错误,sscanf()
返回 0
。
#include <stdio.h> int main() { const char *str = "1234"; int num; int result = sscanf(str, "%d", &num); if (result == 1) { printf("转换后的整数: %d\n", num); } else { printf("转换字符串为整数时出错。\n"); } return 0; }