输入一个整数,将此整数保存到文件中,以记事本打开,显示同样的内容
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
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
相关文章推荐
- C源程序:输入当前目录下的文本文件名称,尝试打开文件,逐个字符读取文件内容并显示出来
- 怎么把控制台输入命令之后显示的东西保存到一个记事本中
- 建立一个文本文件in.txt,在其中输入若干个正整数,中间用空格分隔,然后保存起来;在窗体上添加一个命令按钮和一个标签框,当单击命令按钮时将in.txt文件中存放的所有的能被3整除的数的和显示在标签框
- 8.9 编写函数打开文件用于输入,将文件内容读入 string 类型的 vector 容器,每一行存储为该容器对象 的一个元素。8.10 重写上面的程序,把文件中的每个单词存储为 容器的一个元素
- 一个WinForm记事本程序(包含主/下拉/弹出菜单/打开文件/保存文件/打印/页面设置/字体/颜色对话框/剪切版操作等等控件用法以及记事本菜单事件/按键事件的具体代码)
- c#开发一个“记事本”程序,要求能够实现文件的新建、打开、编辑、保存功能
- 一个WinForm记事本程序(包含主/下拉/弹出菜单/打开文件/保存文件/打印/页面设置/字体/颜色对话框/剪切版操作等等控件用法以及记事本菜单事件/按键事件的具体代码)
- C键盘输入一行字符,写入一个文件,再把该文件内容读出显示在屏幕上。
- 用记事本手写一个.jsp文件,然后在网页中打开中文显示乱码的解决方案
- 一个WinForm记事本程序(包含主/下拉/弹出菜单/打开文件/保存文件/打印/页面设置/字体/颜色对话框/剪切版操作等等控件用法以及记事本菜单事件/按键事件的具体代码)
- 怎么把控制台输入命令之后显示的东西保存到一个记事本中
- 【面试题】输入并保存文件,完成后退出显示文件内容
- 关于GBK编码的BUG 记事本输入“鲁”保存后重新打开显示乱码
- 一个WinForm记事本程序(包含主/下拉/弹出菜单/打开文件/保存文件/打印/页面设置/字体/颜色对话框/剪切版操作等等控件用法以及记事本菜单事件/按键事件的具体代码)
- 一个WinForm记事本程序(包含主/下拉/弹出菜单/打开文件/保存文件/打印/页面设置/字体/颜色对话框/剪切版操作等等控件用法以及记事本菜单事件/按键事件的具体代码)
- 从键盘上输入文件的内容和要保存的文件名称,然后根据输入的名称创建文件,并将内容保存到文件中
- 用户输入一个整数,然后显示所有小于或等于该数的素数!
- SendTextMessage如何打开记事本并显示指定内容
- easygui系列之-打开文件显示内容
- C0302 将一个代码块中的内容保存在文件中, 查看一个rpm包是否可以安装