黑马程序员技术交流社区
标题:
关于字符串与整型之间的转换??
[打印本页]
作者:
FlyTrem
时间:
2014-3-23 09:00
标题:
关于字符串与整型之间的转换??
本帖最后由 FlyTrem 于 2014-3-24 14:59 编辑
#include<stdio.h>
int main()
{
int i,j,x;
char a[]="342";
char b[]="17";
char c[10];
i=a[0]*100+a[1]*10+a[2];
j=b[0]*10+b[1];
x=i-j;
c[0]=x/100;
c[1]=(x-c[0]*100)/10;
c[2]=x%10;
printf("%s",c);
return 0;
}
复制代码
这个是一开始写的,对于数值型字符串转化为整型,但是错误的,后来知道是运算时以ASCII值的!那要对这类的字符串转化为整型应该怎么做呢?
作者:
董月峰
时间:
2014-3-23 11:09
函数原型: int atoi(const char *nptr);
需要用到的头文件: #include <stdlib.h>
比如
char *str=“14321432”,
int n;
n=atoi(str);
作者:
董月峰
时间:
2014-3-23 11:17
不过atoi只能实现十进制字符串转换,所以使用sscanf也行
作者:
董月峰
时间:
2014-3-23 11:23
sscanf的用法举例
1. 常见用法。
1
2
3
charbuf[512];
sscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!
printf("%s\n",buf);
结果为:123456
2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
1
2
sscanf("123456","%4s",buf);
printf("%s\n",buf);
结果为:1234
3. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。
1
2
sscanf("123456abcdedf","%[^]",buf);
printf("%s\n",buf);
结果为:123456
4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
1
2
sscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);
printf("%s\n",buf);
结果为:123456abcdedf
当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);
1
printf("%s\n",buf);
结果为:123456BCDEF
5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
1
2
sscanf("123456abcdedfBCDEF","%[^A-Z]",buf);
printf("%s\n",buf);
结果为:123456abcdedf
6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,
先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中
1
2
sscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);
printf("%s\n",buf);
结果为:12DDWDFF
7、给定一个字符串“hello, world”,仅保留world。
(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)
1
2
sscanf(“hello,world”,"%*s%s",buf);
printf("%s\n",buf);
结果为:world
%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了
如果没有空格则结果为NULL。
作者:
conpgy
时间:
2014-3-23 11:56
光是就题目而言,其实你将数字的ascii码值减去0的ascii码值就行了。如i,j可以改成如下:
i=(a[0] - '0') * 100 + (a[1] - '0') * 10+(a[2] - '0');
j=(b[0] - '0') * 10 + (b[1] - '0');
这只是光就代码中的字符串转换成数字。最好把它写成一个函数,可扩展。itoa和atoi。
将整数转换成字符串可以简单如下实现:
sprintf(c, "%d", x);
作者:
FlyTrem
时间:
2014-3-23 13:08
董月峰 发表于 2014-3-23 11:23
sscanf的用法举例
1. 常见用法。
1
很具体谢谢!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2