//将整型转化为字符串
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()函数。
阅读(5110) | 评论(0) | 转发(0) |