Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1877773
  • 博文数量: 217
  • 博客积分: 4362
  • 博客等级: 上校
  • 技术积分: 4180
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-20 09:31
文章分类

全部博文(217)

文章存档

2017年(1)

2015年(2)

2014年(2)

2013年(6)

2012年(42)

2011年(119)

2010年(28)

2009年(17)

分类: C/C++

2009-11-22 22:28:26


//将整型转化为字符串
void itoa(int n, char *ch, int *len) {
    if(n < 10 && n >= 0) {
        ch[(*len)++] = (char)(n + '0');
    } else {
        itoa(n / 10, ch, len);
        ch[(*len)++] = '0' + n%10;
    }
}

其中的参数解释为:n为要转化的整型数据,ch为转化后的字符串首地址,len为一个等于零的int型数据。
//将字符串转化为整型数据返回
int char_to_int(char *name) {
    int i = 0, a = 0, len, value, j;
    len = strlen(name);
    while(name[i] != 0) {
        value = name[i] - '0';
        for(j = 1; j < len - i; j++) {
            value *= 10;
        }
        a += value;
        i++;
    }
    return a;
}
其中的参数解释为:name为要转化的字符串的首地址,该函数返回转化好的int型数据。
当然char_to_int()函数在系统里面有定义,可以直接使用,只要加上头文件就可以了。

也可以借助sscaf()和sprintf()进行转化:
以前还没有见过sscanf()函数,现在明白了,我小结一下:
若想用read()
读取文件中的整型数据时可以借助sscanf()进行操作,假如我有一个sun文件,里面是87192,可以执行下面的程序进行测试:

#include
#include
#include
#include

int main(void)
{
       int a, fd;
       char ch[20], ch1[20];

       fd = open("sun", O_RDONLY);
       read(fd, ch, 20);
       sscanf(ch, "%d", &a);
       sprintf(ch1, "%d", a);
       printf("(int a) = %d,(char ch1[]) = %s\n", a, ch1);
       close(fd);

       return 0;
}
结果是:
(int a) = 87192,(char ch1[]) = 87192;
说明:上面用到了sscanf()和sprintf()函数。

阅读(5055) | 评论(0) | 转发(0) |
0

上一篇:使用优盘装系统

下一篇:有趣的随机数

给主人留下些什么吧!~~