c语言字符串转int类型(图示c语言字符串怎么转换int)

某些特殊的字符串:

“12138””1.2e5″

它们可以转换为对应的数据类型。在stdlib.h头文件中,提供了以下函数,实现字符串和其他数据类型的转换。函数原型和功能如下:
c语言字符串转int类型(图示c语言字符串怎么转换int)

函数描述double atof(const char *str)把参数str所指向的字符串转换为一个浮点数(类型为 double 型)。int atoi(const char *str)把参数str所指向的字符串转换为一个整数(类型为 int 型)。long int atol(const char *str)把参数str所指向的字符串转换为一个长整数(类型为 long int 型)。double strtod(const char *str, char **endptr)把参数str所指向的字符串转换为一个浮点数(类型为 double 型)。long int strtol(const char *str, char **endptr, int base)把参数str所指向的字符串转换为一个长整数(类型为 long int 型)。unsigned long int strtoul(const char *str, char **endptr, int base)把参数str所指向的字符串转换为一个无符号长整数(类型为 unsigned long int 型)。

(1)将字符串转成一个浮点数:

#include <stdio.h>#include <stdlib.h>int main(){ char *a = “-100.23”, *b = “200e-2”, *c = “341”, *d = “100.34lingjun”, *e = “.12”, *f = “-.12”, *g = “ling123”; printf(“a = %.2f\n”, atof(a)); printf(“b = %.2f\n”, atof(b)); printf(“c = %.2f\n”, atof(c)); printf(“d = %.2f\n”, atof(d)); printf(“e = %.2f\n”, atof(e)); printf(“f = %.2f\n”, atof(f)); printf(“g = %.2f\n”, atof(g)); system(“pause”); return 0;}

程序结果为:

a = -100.23b = 2.00c = 341.00d = 100.34e = 0.12f = -0.12g = 0.00

(2)把字符串转成一个整型数

#include <stdio.h>#include <stdlib.h>int main (){ int i; char buffer[256]; printf (“输入数字字符串: “); fgets (buffer, 256, stdin); i = atoi (buffer); printf (“输入的数是 %d.\n”, i); system(“pause”); return 0;}

运行示例:

输入数字字符串: 123输入的数是123.

读者可以尝试不同的输入,体会atoi函数的功能。

(3)字符串转double型数据

#include <stdio.h>#include <stdlib.h>int main(){ char str[30] = “20.30300 This is test”; char *ptr; double ret; ret = strtod(str, &ptr); printf(“数字(double)是 %lf\n”, ret); printf(“字符串部分是\”%s\””, ptr); return(0);}

运行结果为:

数字(double)是 20.303000字符串部分是” This is test”

从运行结果来看,函数的返回值是字符串中的double型数据,ptr是匹配失败的位置的指针。

(4)指定转换基数的转换方法

#include <stdio.h>#include <stdlib.h>int main(){ char str[30] = “1010111 This is test”; char *ptr; long ret; ret = strtoul(str, &ptr, 2); printf(“数字(无符号长整数)是 %lu\n”, ret); printf(“字符串部分是 |%s|”, ptr); return 0;}

运行结果:

数字(无符号长整数)是 87字符串部分是 | This is test|

strtoul函数的三个参数分别为待转换为长整数的字符串、str中数值后的下一个字符、基数,必须介于[2, 36]之间,或者是特殊值 0。

程序中,指定的基数为2,所以读取的是二进制序列。如果将字符串改成:

char str[30] = “1210111 This is test”;

结果将变成:

数字(无符号长整数)是 1字符串部分是 |210111 This is test|

因为,二进制序列不能出现大于1的字符。

剩余为测试的函数请读者自行测试,参数与上述示例程序完全一致。

发表评论

登录后才能评论