当前位置:首页>开发>正文

c语言读取二进制数据文件 如何用C语言读写文件

2023-06-22 05:04:09 互联网 未知 开发

 c语言读取二进制数据文件 如何用C语言读写文件

c语言读取二进制数据文件

1、二进制文本使用fopen函数的二进制模式“rb”就可以打开。对于程序来说,不管后缀名如何,文件分为两种类型:文本文件和二进制文件。 C语言里有一系列文件操作函数。区分文本和二进制文件,需要在打开文件时设置不同的控制符mode的变量即可。

2、fopen的函数原型:FILE * fopen(const char * path,const char * mode)
fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:
  r 以只读方式打开文件,该文件必须存在。
  r 以可读写方式打开文件,该文件必须存在。
  rb 读写打开一个二进制文件,允许读数据。
  rw 读写打开一个文本文件,允许读和写。
  w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
  w 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
  a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
  a 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
  wb 只写打开或新建一个二进制文件;只允许写数据。
  wb 读写打开或建立一个二进制文件,允许读和写。
  wt 读写打开或着建立一个文本文件;允许读写。
  at 读写打开一个文本文件,允许读或在文本末追加数据。
  ab 读写打开一个二进制文件,允许读或在文件末追加数据。
  上述的形态字符串都可以再加一个b字符,如rb、w b或ab 等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。

3、例程:

#include #include int main () { FILE * fpPhoto, * fpText, * fpTarget int iRead char szBuf[100] printf ("请输入第一个文件名(jpg): ") gets (szBuf) fpPhoto = fopen (szBuf, "rb") printf ("请输入第二个文件名(txt): ") gets (szBuf) fpText = fopen (szBuf, "rb") printf ("请输入目的文件名(jpg): ") gets (szBuf) fpTarget = fopen (szBuf, "wb") if (!fpPhoto || !fpText || !fpTarget) { printf ("打开文件失败! ") system("pause") return -1 } while ((iRead = fread (szBuf, 1, sizeof (szBuf), fpPhoto)) > 0) fwrite (szBuf, 1, iRead, fpTarget) while ((iRead = fread (szBuf, 1, sizeof (szBuf), fpText)) > 0) fwrite (szBuf, 1, iRead, fpTarget) fclose (fpPhoto) fclose (fpText) fclose (fpTarget) return 0 }

如何用C语言读写文件

一个c语言读写文件程序:
#include "stdio.h"
#include <stdlib.h>

main()
{
FILE *fp1//定义文件流指针,用于打开读取的文件
FILE *fp2//定义文件流指针,用于打开写操作的文件
char text[1024]//定义一个字符串数组,用于存储读取的字符
fp1 = fopen("d:\a.txt","r")//只读方式打开文件a.txt
fp2 = fopen("d:\b.txt","w")//写方式打开文件a.txt
while(fgets(text,1024,fp1)!=NULL)//逐行读取fp1所指向文件中的内容到text中
{
puts(text)//输出到屏幕
fputs(text,fp2)//将内容写到fp2所指向文件中
}
fclose(fp1)//关闭文件a.txt,有打开就要有关闭
fclose(fp2)//关闭文件b.txt
}

如何用c读取文件

应该用fscanf()函数来读取
下面给个小例子:
保存代码时,以.C为后缀名.用VC6.0编译(TC2.0也可,但不能显示汉字)
用VC6.0编译时,不能点"!"来运行程序,因为这样程序是不能建立文件的.
应该在Debug文件夹里面再运行程序(VC6.0编译程序时,生成的可执行文件放在Debug文件夹里面,里面要有"成绩.txt"文件)
#include
#include
void ReadStudentDataToFile(void)
void main()
{
ReadStudentDataToFile()
getch()
}
void ReadStudentDataToFile(void)
{
FILE *fp
float data
fp=fopen("成绩.txt","r")
if(!fp)
{
printf("不能打开文件 ")
return
}
while(fscanf(fp,"%f",&data)>0)/*显示所有的成绩*/
{
printf("%f ",data)
}
fclose(fp)
}

C读取文件

下面是一个完整的实例, 楼主参考: #include #include int main() { char *pchBuf = NULL int nLen = 0 FILE *pF = fopen(__FILE__, "r") //打开文件 fseek(pF, 0, SEEK_END) //文件指针移到文件尾 nLen = ftell(pF) //得到当前指针位置, 即是文件的长度 rewind(pF) //文件指针恢复到文件头位置 //动态申请空间, 为保存字符串结尾标志, 多申请一个字符的空间 pchBuf = (char*) malloc(sizeof(char)*nLen 1) if(!pchBuf) { perror("内存不够! ") exit(0) } //读取文件内容//读取的长度和源文件长度有可能有出入,这里自动调整 nLen nLen = fread(pchBuf, sizeof(char), nLen, pF) pchBuf[nLen] = //添加字符串结尾标志 printf("%s ", pchBuf) //把读取的内容输出到屏幕看看 fclose(pF) //关闭文件 free(pchBuf) //释放空间 return 0 }

C语言读取文件的问题

fscanf(file,"%s%s%s%s%s%d%s%d%s%d%s%d%s%d%s%d",p->a[0],p->name,p->a[1],p->number,p->nameofsub[0],&p->subject[0],p->nameofsub[1],&p->subject[1],p->nameofsub[2],&p->subject[2],p->nameofsub[3],&p->subject[3],p->nameofsub[4],&p->subject[4],p->nameofsub[5],&p->subject[5])

自己确定下这一串玩意有没有问题,看的眼花了。

问题就是出在这。
字符要用%c
p->nameofsub[5],这个应该是字符吧。你用的输入格式也没有%c.
自己好好检查检查。

最新文章