您的位置:首页 > 其它

输入一个整数,将此整数保存到文件中,以记事本打开,显示同样的内容

2013-06-20 22:39 585 查看
原理:

1.首先说明,输出的内容是一个一个的字符。而不再是整数。以输入98341为例。

2.如果将int i=98341,通过fwrite()函数写到文件中,必然会是乱码。因为,文件中存储的是整数98341的二进制码。而以文本打开,是以ASCII码格式解析的。这样,解析出来的值对应相应的字符,因此会是乱码。

3.如果想要正确显示,需要在写入文件前,进行数字与字符ASCII码的转换,保证存储的是,文本文件可以解析的ASCII码。测试程序如下,可读性不好,只是做实验。

#include <stdlib.h>

#include <stdio.h>

//用于统计,要除10,100,1000?用于逐位进行转换。9变成‘9’,8变成‘8’等等。

int multi(int num)

{

int mult=1;

for(int i=1; i<num; i++)

mult=mult*10;

return mult;

}

// 转换函数

void change(int num)

{

FILE *fp;

int i=0;

if((fp=fopen("test.txt","w+"))==NULL)

{

printf("open fail!\n");

return ;

}

//统计输入的数的位数,98341的count为5,以后很有用。

int count=0;

i=num;

while(i)

{

count++;

i=i/10;

}

char a[10]="";// 初始化为空串

int k = multi(count); // k返回10000

int t=1; //用于循环结束判断

int j=0;

while(t)

{

a[j]=num/k+48; //转换为ASCII码

t=num/10;

num=num%k; // 去除最高位

j++;

k=k/10;

}

fwrite( a,sizeof(char)*count,1,fp); // 写入fp指向的文件

fclose(fp);

}

void main()

{

int num;

printf("input the int number:\n");

scanf("%d",&num);

change(i);

system("pause");

}



输出为:98341
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐