求c语言读取写入文本文件的函数实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求c语言读取写入文本文件的函数实现相关的知识,希望对你有一定的参考价值。
小弟不懂c/c++开发,现在需要实现这么个功能提供给外部程序调用,请大侠帮忙实现,不胜感激
myfile.h
extern "C" _declspec(dllexport) int FileCreate(char *filePath,char *fileContext);
extern "C" _declspec(dllexport) char* FileRead(char *filePath);
myfile.cpp
//创建文件 成功返回0 失败返回1
//filePath文件路径 比如c:/myfile.txt
//fileContext文件内容 比如 测试写入abc123,也可以没有中文字符
int FileCreate(char *filePath,char *fileContext)
//读取文件 成功返回文件内容 失败返回空字符串
//filePath文件路径 比如c:/myfile.txt
char* FileRead(char *filePath)
上面的代码不一定正确,但意思应该表达清楚了,我这边的环境是vs2010建的win32 dll,麻烦贴完整的代码包括要引用哪些头文件,再次感谢
方便的话也可以上 csdn 回答
//bbs.csdn.net/topics/390696105?page=1#post-396617198
#include <stdio.h>
#include <string.h>
int main()
FILE *fp = fopen("1.txt", "a+");
if (fp==0)
printf("can't open file\n");
return 0;
fseek(fp, 0, SEEK_END);
char sz_add[] = "hello world\n";
fwrite(sz_add, strlen(sz_add), 1, fp);
fclose(fp);
return 0;
或
#include<stdio.h>
struct stu
char name[10];
int num;
int age;
char addr[15];
boya[2],boyb[2],*pp,*qq;
main()
FILE *fp;
char ch;
int i;
pp=boya;
qq=boyb;
if((fp=fopen("stu_list","wb+"))==NULL)
printf("Cannot open file strike any key exit!");
getch();
exit(1);
printf("\ninput data\n");
for(i=0;i<2;i++,pp++)
scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr);
pp=boya;
for(i=0;i<2;i++,pp++)
fprintf(fp,"%s %d %d %s\n",pp->name,pp->num,pp->age,pp->addr);
rewind(fp);
for(i=0;i<2;i++,qq++)
fscanf(fp,"%s %d %d %s\n",qq->name,&qq->num,&qq->age,qq->addr);
printf("\n\nname\tnumber age addr\n");
qq=boyb;
for(i=0;i<2;i++,qq++)
printf("%s\t%5d %7d %s\n",qq->name,qq->num, qq->age,qq->addr);
fclose(fp);
参考技术A #include <stdio.h>
#include <string.h> //strlen()
#include <malloc.h> //malloc()
int FileCreate(char *filePath,char *fileContext)
FILE* fp;
fp=fopen(filePath,"w+");
if(fp)
fwrite(fileContext,strlen(fileContext),1,fp);
fclose(fp);
return 0;
return 1;
char* FileRead(char *filePath)
FILE* fp;
long int fsize;
char* fileContext;
fp=fopen(filePath,"r");
if(fp)
fseek(fp,0,SEEK_END);
fsize=ftell(fp);
rewind(fp);
fileContext=(char*)malloc(fsize+1); //注意释放内存
fread(fileContext,fsize,1,fp);
*(fileContext+fsize)='\\0';
fclose(fp);
return fileContext;
return NULL;
int main() //测试
char* fileContext;
char* filePath="d:\\\\111.txt";
FileCreate(filePath,"abc123");
fileContext=FileRead(filePath);
printf("%s",fileContext);
free(fileContext); //释放
return 0;
本回答被提问者和网友采纳
C语言将数据写入文件,读取出现二次读取
出现的问题就在我画红线的地方。
*****以写的方式保存数据到文件的函数【原数据将被覆盖】*****/
int save(int n) //保存函数,保存n个记录
FILE *fp;
int i;
if((fp=fopen("zhouhao.txt","wb"))==NULL)//以二进制写的方式打开,在此前的记录被覆盖
printf("无法打开文件!\n任意键退出程序... ...\n");
getch(); //预防闪屏
return 0;
for(i=0;i<n;i++)
if(per[i].f_num!=0) //在后面的del()函数中通过将stu[i].ave=0来表示该记录被删除了
if(fwrite(&per[i],sizeof(struct person),1,fp)!=1)//开始写入文件
printf("文件写入发生错误\n");
fclose(fp);
return 0; // 注意下这个地方 ,我只是随便赋的值,只是为了消除一个警告
/***【加载记录或可以计算记录个数的函数】***/
int load()
FILE *fp;
int i;
if((fp=fopen("zhouhao.txt","rb"))==NULL) //以二进制读的方式打开
printf("无法打开文件!\n任意键退出程序... ...\n"); //显示不能打开文件的信息
getch(); //预防闪屏
return 0;
for(i=0;!feof(fp);i++)
fread(&per[i],sizeof(struct person),1,fp); //将文件数据读入学生结构体
fclose(fp);
return(i-1); //返回目前总的记录个数,注意是i-1
大神给点建议,是哪儿出现问题了,如果要源程序的话我也可以共享!
person结构体
typedef struct person
char number[4]; //序号
char ymd[10]; //来访日期
char v_name[10]; //来访人姓名
char cre_name[10]; //来访人证件名
char c_num[18]; //来访人证件编号
char bv_name[10]; //被访人姓名
double f_num; //被访人楼号
char hm_start[5]; //来访时间
char hm_leave[5]; //离开时间
char desc[20]; //备注
PER;
PER per[N]; //定义一个外部结构体变量
用fread的返回结果判断就行了,0就是没数据了
for(i=0;!feof(fp);i++)
fread(&per[i],sizeof(struct person),1,fp);
改成
i=0;
while (fread(&per[i],sizeof(struct person),1,fp))
i++;追问
还是不行哎。。大哥,改完以后还是输出这个结果。。。
追答return(i-1); //返回目前总的记录个数,注意是i-1
不用-1了,直接return i
大哥,不行的,
参考技术A 提供一下你的person结构体,估计变量定义有问题追问我把person结构体补充到上面了,这边写不下。。。麻烦您咯。。
追答char ymd[10]; //来访日期 你存储的数据如果是2014/07/02则说明有效数据是10个,而作为一个字符串,应该还要有一位结束符位('\0'),因此,应该改为char ymd[11]; //来访日期,比有效数据多一个才好!
其他地方的字符串也要注意这个问题。
祝进步
大哥还是不对啊,我都改了,依旧是原来的样子
追答重新保存你的数据文件,再重新读数据才可以!
追问谢谢咯,还是不行
追答共享完整代码,你这程序就这两个问题,一个是楼下说的多读了一行空数据,所以出现了2和NULL
另一个,就是你变量定义的问题,导致输出的日期后面有附加数据。
以上是关于求c语言读取写入文本文件的函数实现的主要内容,如果未能解决你的问题,请参考以下文章