2 u013285632 u013285632 于 2014.03.26 19:55 提问

c语言中怎样将数值型数组写到txt文件中,并且打开文件时不是一堆乱码?

求教!请问在对文件进行读写的时候,将一double型的数组写进文件中,之后打开文件,为什么都是乱码?怎么修改才能在文件中显示数值呢?
附写的代码:
#include
#include
#include
struct type
{
double data[2];
};

void main()
{
int i;
struct type dataset[200];
FILE *fp;
if(!(fp=fopen("dataset.txt","w")))
{
printf("cannot open this file!\n");
exit(0);
}
for(i = 0; i < 200; i ++)
{
dataset[i].data[0] = (double)(rand()%500);
dataset[i].data[1] = (double)(rand()%500);
fwrite(&dataset[i],sizeof(struct type),1,fp);
}
fclose(fp);

1个回答

q120742915
q120742915   2014.06.04 11:21

请将fwrite换成fprintf,你这样是采用2进制形式写进去的,不是字符,所以打开是乱码

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言中如何将数字转换成字符串
发现了一个很好的转换函数吧   char * int_to_char(int a)   {   char *b;   sprintf(b,"%d",a);   return b;   }   更多,参考:atof(将字符串转换成浮点型数)   atoi(将字符串转换成整型数)   atol(将字符串转换成长整
关于生成TXT文件的乱码问题
StreamReader sr = new StreamReader( FileName, System.Text.Encoding.GetEncoding( "gb2312" )); 
字符数据在内存中的存储形式及其使用方法(C实现)
字符数据在内存中的存储形式及其使用方法(C实现) 1、将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中。 例如字符'a'的ASCII代码为97,'b'为98,在内存中变量c1、c2的值如下图(a)所示。实际上是以二进制形式存放的,如(b)所示。 既然在内存中,字符数据以ASCII码存储,它的存储形式就与整数
c语言如何从txt文件读取数据
打开文件 fopen("需要打开的路径")然后使用fgets函数读取行 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LINE 1024 int main() { char buf[MAX_LINE]; /*缓冲区*/ FILE *fp
C / C++ 读取文件出现乱码解决方法
  昨天用C语言写了一下文件读取,发现读出来的全是乱码。这肯定是文字编码不同导致的。      据我查证,C语言的汉字编码方式是由你电脑决定的,所以需要看一下你电脑是什么编码,来确定你需要把文本文件改成什么编码。 1.win+R,打开运行框之后输入cmd打开,然后在cmd最上边右键→属性,点开就可以查看当前编码方式,我的电脑是GBK。 2.然后修改对应的文本文件编码方式。 ...
C语言中如何将数字转换成字符串?
文章转自:http://blog.163.com/xiaowh001@126/blog/static/1658403732011111673022648/   偶然遇到这个问题,想了半天竟然没有思路。 感觉用" "+25应该是可以的,结果发现竟然不能了,难道是编译器不对。 发现了一个很好的转换函数吧 char * int_to_char(int a){ char *b; sprint
怎么用c语言实现读取一个txt文件里的数据 要按行读出来
打开文件 fopen("需要打开的路径") 然后使用fgets函数读取行 #include  #include  #include  #define MAX_LINE 1024 int main() {  char buf[MAX_LINE];  /*缓冲区*/  FILE *fp;            /*文件指针*/  int len;             /*行字符个数*/
数字输出到文件出现乱码的情况
今天写2016级复试编程题,将数字输出到TXT文件中。在写入到文件中时,打开TXT文件出现了乱码。 //写入文件 File file=new File("D://我的.txt"); //OutputStream os=new FileOutputStream(file); Writer writer=new FileWriter(file); for(int i=0;i<24;
c语言如何将printf产生的数据写到txt文件中
程序如下 #include void main() { FILE *fp;  // 声明一个文件流类型的变量,FILE 为 stdio.h 里定义的 fp=fopen("1.txt","w"); //用 fopen 函数打开文件,第一个参数表示文件名,若不是当
c语言中,如何取出double类型数的每一位到一个数组
例如123456789876,是一个12位的double型数,如何取出每一位数到数组a[12]。 使用sprintf(s,"%lf",a);s是你开的数组,a是double。这样就把a写到s中了。 具体代码: #include #include using namespace std; int main() { char s[12]; double a=123456789