整型数据和字符串数据相互转化代码

5142阅读 0评论2009-11-22 sunjiangang-ok
分类:C/C++


//将整型转化为字符串
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()函数。

上一篇:使用优盘装系统
下一篇:有趣的随机数