C语言关于数据保存到文件的问题

下面是我写的某个程序中的一些片段,运行的时候保存了,在文件相应的位置也能找到文件,打开能看到保存的东西,但是程序下次打开的时候就显示不出来,我研究了一天也没看出来,求大神帮帮忙拯救一下我吧,告诉我到底哪个地方出错了,是打开出错了还是保存出错了还是我用法有问题?
#define LEN1 sizeof(H)

#define LEN2 sizeof(struct letter)

typedef char **H;

struct letter
{
char data;
int count;
}let[N];

H HC;
HC=(H)malloc(n*sizeof(char *));
//------------------下面是打开文件的片段---------------------------

FILE *fp1,*fp2;
fp1=fopen("d:\\H.txt","r+");
fp2=fopen("d:\\letter.txt","r+");
if(fp1==NULL)
fp1=fopen("d:\\H.txt", "w+");
if(fp2==NULL)
fp2=fopen("d:\\letter.txt", "w+");
for(i=0;i<n;i++)
fgets(HC[i],n+1,fp2);
for(i=0;i<N;i++)
fread(&let[i],LEN2,1,fp2);
fclose(fp1);
fclose(fp2);
//------------------下面是保存的片段---------------------------
int i;
if ((fp1=fopen("d:\\H.txt", "w"))==NULL || (fp2=fopen("d:\\letter.txt", "w"))==NULL)
{
printf("error\n");
return;
}
for(i=0;i<n;i++)fputs(HC[i],fp1);
if(fwrite(&HC[i],LEN1,1,fp1)!=1)
printf("error\n");
for(i=0;i<N;i++)
if(fwrite(&let[i],LEN2,1,fp2)!=1)
printf("error\n");
if(!ferror(fp1) && !ferror(fp2))
{
printf(" 保存成功!\n");
fclose(fp1);
fclose(fp2);
}

第1个回答  2017-02-26
我是这样看的:
typedef char **H;

H HC;
HC=(H)malloc(n*sizeof(char *)); //这里定义了#define LEN1 sizeof(H)又不用 不是重点
也就是
char** HC;
HC=(char**)malloc(n*sizeof(char*));
HC是指向文本串的指针,实际上sizeof(char*)=32(可能是)你得到的是一串地址用来放指针的,文本并不在这里。
fwrite(&HC[i],LEN1,1,fp1)这个动作,将指针本身的地址写入了文件,所以估计你的代码是抄袭加修改的,给人大手大脚的感觉,如果想解决问题,使用比较踏实的语法写一次吧。追问

HC不应该是指向字符型指针的指针吗?指向文本串的指针是什么指针?

第2个回答  2017-02-26
在c语言中,创建单链表需要使用到malloc函数动态申请内存;

如何把c语言中输出的数据保存到一个文件夹中?
1、首先,可以先查看整体代码,了解保存整体框架。2、然后,定义一个文件指针,指向文件。3、接下来就可以先对控制台清屏幕。4、此时,就可以开始使用保存的命令语句。5、还能对屏幕适当的等待。6、最后记得关闭文件的打开。7、打开保存为这个页面,并选择好路径。8、然后点击保存类型。9、然后找到文件名...

C语言中,把数据储存在txt文件中的代码怎么写的?
c语言,把数据存在txt文件里,需要使用fopen函数以写文件的方式打开文件。然后可以使用fprintf,fputc,fputs,fwrite等函数,把相应类型的数据写入文件。最后,写入完成后使用fclose函数关闭文件。下面的C语言程序源程序展示了合并A.txt和B.txt两个TXT文件的内容存储到到新建的一个TXT文件,C.txt。include <...

C语言中把数据储存在txt文件时,原来txt中的内容被覆盖了。
你fopen函数选择的是参数不对造成的。在C语言中,这个函数的参数由r,w,a,t,b,+六个字符拼成,各字符的含义是:r(read):读 w(write):写 a(append):追加 t(text):文本文件,可省略不写 b(binary):二进制文件 +:读和写 你在参数中肯定没有使用a,所以不是追加,而是从头写入了。

C语言,如何把一个数组存放到txt文件中去?
1、使用VS新建空工程,直接点击确定。2、新建c文件,用于C语言编译器。3、然后输入main.c文件。4、写入下面代码#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_LINE 1024void ReadTxt(char* pFilePath){char buf[MAX_LINE]; \/*缓冲区*\/FILE *fp; \/*文件指针*\/...

用C语言怎么编写将信息保存到文件里?谢谢
初学者最简单的办法就是把输出流由控制台输出改为文件输出。示例:include<stdio.h>main() { char str[50] = "这个就是要保存到文件里的信息。"; \/* 把输出流由控制台输出改为输出到文件d:\\1.txt中 *\/ freopen("D:\\\\1.txt", "w", stdout); \/* 这样,用printf的输出就...

c语言如何创建文件并将结构体数据存进去
c语言如何创建文件并将结构体数据存进去?需要使用文件操作函数fwrite和fread。 读物文件并写入结构体,同时保存文件的代码如下:1、写 FILE* fp = fopen("card.dat

怎样把C语言生成的数据保存在文本中
使用fprintf()函数,按照需要的格式保存数据。例如 include<stdio.h> void main(){ int i,a[10];FILE *fp;if((fp=fopen("test.txt","wt"))==NULL){ printf("cannot open file\\n");return;} for(i=0;i<10;i++){ scanf("%d",&a[i]);fprintf(fp,"%d\\n",a[i]);\/\/保存数组...

c语言怎么保存数据到txt??程序如下
先file一个fp指针来open那个.txt文件,用fgetc(fp)一次一个把取出的字符存入一个自己设的字符串(比如char temp[255];),当取到的字符为空格或者回车(即''或'\\n')时,调用函数atof(temp),返回值就是浮点数。然后清空temp,接着读字符。

(C语言)把结构体的数据存到TXT文件中,为什么打开TXT记事本显示是乱码呢...
\/* 文本存储 *\/ void save1(){ FILE *fp;if((fp=fopen("test1.txt","wt"))==NULL){ printf("cannot open file\\n");return;} fprintf(fp,"%s %d\\n",stud[0].name,stud[0].age);fprintf(fp,"%s %d\\n",stud[1].name,stud[1].age);fclose(fp);} void main(){ strcpy(...

如何将在c语言中生成的数据保存到文本文件中?
pf);pf=NULL;} printf("数据已写入test.txt文件!\\n");return 0;} int fprintf( FILE *stream, const char *format, ... );fprintf()函数根据指定的format(格式)发送参数到由stream指定的文件。fprintf()只能和printf()一样工作,fprintf()的返回值是输出的字符数,发生错误时返回一个负值。

相似回答
大家正在搜