比较全面的文件操作,支持中文文件名//
#include "stdafx.h"
#include
#include
#include
#include
#include
#include "atltime.h"
#include
using namespace std;
#define NDEBUG
int gcd(int v1,int v2);
bool createDir(const char* dir);
bool createFile(const char* fileName);
void findFile();
bool isExistFile(const char* filePath);
bool isExistFileW(const char* filePath);
int main()
{
#ifndef NDEBUG
cerr << "error" << endl;
#endif
int n = gcd(12,9);
cout << n << endl;
/*char dir[] = "c:\\日涨跌";
bool b = createDir(dir);
if(b)
{
cout << "创建目录成功" << endl;
}
else
{
cout << "创建目录失败" << endl;
}*/
/*bool bRes = createFile("");
if(bRes)
{
cout << "创建文件成功" << endl; }
else
{
cout << "创建文件失败" << endl; } */
//findFile();
bool bExist = isExistFile("c:\\日志.txt"); if(bExist)
{
cout << "文件存在" << endl;
}
else
{
cout << "文件不存在" << endl;
}
isExistFileW("c:\\日志.txt");
string s;
cin >> s;
return 0;
}
int gcd(int v1,int v2)
{
while(v2)
{
int temp = v2;
v2 = v1 % v2;
v1 = temp;
}
return v1;
}
/********************************************************** **************/
/* 创建文件
文件名是中文时: 本地化设置可以通过setlocale函数来设置,
/********************************************************** **************/
bool createFile(const char* fileName)
{
if(NULL == fileName)
{
return FALSE;
}
else
{
locale::global(locale("")); //将全局区域设为操作系统默认区域
ofstream ofs("c:\\日志.txt",ios::app | ios::out);
locale::global(locale("C"));//还原全局区域设定
if(ofs.is_open())
{
//ofs << "创建了一个文件\n";
//ofs << "这是一个测试\n";
ofs.close();
return TRUE;
}
else if(ofs.bad())
{
return FALSE;
}
}
return FALSE;
}
/********************************************************** **************/
/* 方法3,使用C函数setlocale,不能用cout输出中文的问题解决方法同上
//setlocale(LC_ALL,"Chinese-simplified");//设置中文环境
//file.open("c:\\测试\\测试文本3.txt");//可以顺利打开文件了
//setlocale(LC_ALL,"C");//还原
//cout< //file.close(); /********************************************************** **************/ /********************************************************** **************/ /* 创建目录 /********************************************************** **************/ bool createDir(const char* dir) { if(NULL != dir) { int n= _mkdir(dir); if(0 == n) { return TRUE; } else { return FALSE; } } else { return FALSE; } /********************************************************** **************/ /* 判断目录是否存在*/ /********************************************************** **************/ bool isExistDir(const char* dirPath) { return FALSE; } /********************************************************** **************/ /* 判断文件是否存在 */ /********************************************************** **************/ bool isExistFile(const char* filePath) { setlocale(LC_ALL,"Chinese-simplified");//设置中文环境 fstream fin; fin.open(filePath,ios::in); setlocale(LC_ALL,"C"); if(fin.is_open()) { fin.close(); return true; } else { return false; } } /********************************************************** **************/ /* 在windows平台下用API函数FindFirstFile(...): 判断文件是否存在,支持中文文件 */ /********************************************************** bool isExistFileW(const char* filePath) { WIN32_FIND_DATA FindFileData; HANDLE hFind; hFind = FindFirstFile(filePath,&FindFileData); if(hFind == INVALID_HANDLE_VALUE) { printf("文件不存在"); return false; } else { printf("文件存在"); FindClose(hFind); return true ; } } /********************************************************** /* 使用windowsAPI查找文件*/ /********************************************************** **************/ void findFile() { setlocale(LC_ALL,"chs"); WIN32_FIND_DATA FindFileData; TCHAR FileName[] = "c:\\*.*"; //开始查找 HANDLE hFind = FindFirstFile(FileName,&FindFileData); if(hFind != INVALID_HANDLE_VALUE) { while(true) { CTime CreationTime(FindFileData.ftCreationTime); //是目录 if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { _tprintf(_T("<%s>\t"),FindFileData.cFileName); } else { _tprintf(_T("%s\t"),FindFileData.cFileName); } //创建时间 _tprintf(_T("\t\t%s\r\n"),CreationTime.Format( _T("%Y年%m 月%d日%H时") )); if(!FindNextFile(hFind,&FindFileData)) { break; } } FindClose(hFind); } } 文件操作函数C语言(FILE fputc fgetc fputs fgets fscanf fprintf) 在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。 一、流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:typedef struct{ int level;/*fill/empty level of buffer*/ unsigned flags;/*File status flags*/ char fd;/*File descriptor*/ unsigned char hold;/*Ungetc char if no buffer*/ int bsize;/*Buffer size*/ unsigned char_FAR*buffer;/*Data transfer buffer*/ unsigned char_FAR*curp;/*Current active pointer*/ unsigned istemp;/*Temporary file indicator*/ short token;/*Used for validity checking*/ }FILE;/*This is the FILE object*/ FILE这个结构包含了文件操作的基本属性,对文件的操作都要通过这个结构的指针来进行,此种文件操作常用的函数见下表函数功能 fopen()打开流 fclose()关闭流 fputc()写一个字符到流中 fgetc()从流中读一个字符 fseek()在流中定位到指定的字符 fputs()写字符串到流 fgets()从流中读一行或指定个字符 fprintf()按格式输出到流 fscanf()从流中按格式读取 feof()到达文件尾时返回真值 ferror()发生错误时返回其值 rewind()复位文件定位器到文件开始处 remove()删除文件 fread()从流中读指定个数的字符 fwrite()向流中写指定个数的字符 tmpfile()生成一个临时文件流 tmpnam()生成一个唯一的文件名 下面就介绍一下这些函数 1.fopen() fopen的原型是:FILE*fopen(const char*filename,const char*mode),fopen实现三个功 24c02读写程序大全 2C总线的应用(24C02子程序) // 对24C02的读、写 // extern void DelayMs(unsigned int); // extern void Read24c02(unsigned char *RamAddress,unsigned char Ro mAddress,unsigned char bytes); // extern void Write24c02(unsigned char *RamAddress,unsigned char Ro mAddress,unsigned char bytes); /***************************************************************************/ #define WriteDeviceAddress 0xa0 #define ReadDviceAddress 0xa1 #include Linux下C语言的文件(fputc,fgetc,fwrite,fread对文件读写操 作) //================================== fputc 向文件写入字符 #include FILE *fp; int i; if((fp=fopen(argv[1],"r"))==NULL) { printf("不能打开文件\n"); exit(0); } while ((ch=fgetc(fp))!=EOF) putchar(ch); fclose(fp); } 文件结尾,通过判断EOF //============================================================== fwrite 的使用 使数组或结构体等类型可以进行一次性读写 #include AT24C02串行E2PROM的读写 I2C总线是一种用于IC器件之间连接的二线制总线。它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件:不管是单片机、存储器、LCD驱动器还是键盘接口。 1.I2C总线的基本结构采用I2C总线标准的单片机或IC器件,其内部不仅有I2C接口电路,而且将内部各单元电路按功能划分为若干相对独立的模块,通过软件寻址实现片选,减少了器件片选线的连接。CPU不仅能通过指令将某个功能单元电路挂靠或摘离总线,还可对该单元的工作状况进行检测,从而实现对硬件系统的既简单又灵活的扩展与控制。I2C总线接口电路结构如图1所示。 2.双向传输的接口特性传统的单片机串行接口的发送和接收一般都各用一条线,如MCS51系列的TXD和RXD,而I2C总线则根据器件的功能通过软件程序使其可工作于发送或接收方式。当某个器件向总线上发送信息时,它就是发送器(也叫主器件),而当其从总线上接收信息时,又成为接收器(也叫从器件)。主器件用于启动总线上传送数据并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。I2C总线的控制完全由挂接在总线上的主器件送出的地址和数据决定。在总线上,既没有中心机,也没有优先机。 总线上主和从(即发送和接收)的关系不是一成不变的,而是取决于此时数据传送的方向。SDA和SCL均为双向I/O线,通过上拉电阻接正电源。当总线空闲时,两根线都是高电平。连接总线的器件的输出级必须是集电极或漏极开路,以具有线“与”功能。I2C总线的数据传送速率在标准工作方式下为100kbit/s,在快速方式下,最高传送速率可达400kbit/s。 3.I2C总线上的时钟信号在I2C总线上传送信息时的时钟同步信号是由挂接在SCL时钟线上的所有器件的逻辑“与”完成的。SCL线上由高电平到低电平的跳变将影响到这些器件,一旦某个器件的时钟信号下跳为低电平,将使SCL线一直保持低电平,使SCL线上的所有器件开始低电平期。此时,低电平周期短的器件的时钟由低至高的跳变并不能影响SCL线的状态,于是这些器件将进入高电平等待的状态。 当所有器件的时钟信号都上跳为高电平时,低电平期结束,SCL线被释放返回高电平,即所有的器件都同时开始它们的高电平期。其后,第一个结束高电平期的器件又将SCL线拉成低电平。这样就在SCL线上产生一个同步时钟。可见,时钟低电平时间由时钟低电平期最长的器件确定,而时钟高电平时间由时钟高电平期最短的器件确定。 4.数据的传送在数据传送过程中,必须确认数据传送的开始和结束。在I2C总线技术规范中,开始和结束信号(也称启动和停止信号)的定义如图2所示。当时钟线SCL为高电平时,数据线SDA由高电平跳变为低电平定义为“开始”信号;当SCL线为高电平时,SDA线发生低电平到高电平的跳变为“结束”信号。开始和结束信号都是由主器件产生。在开始信号以后,总线即被认为处于忙状态;在结束信号以后的一段时间内,总线被认为是空闲的。 1.创建文件夹 //using System.IO; Directory.CreateDirectory(%%1); 2.创建文件 //using System.IO; File.Create(%%1); 3.删除文件 //using System.IO; File.Delete(%%1); 4.删除文件夹 //using System.IO; Directory.Delete(%%1); 5.删除一个目录下所有的文件夹 //using System.IO; foreach (string dirStr in Directory.GetDirectories(%%1)) { DirectoryInfo dir = new DirectoryInfo(dirStr); ArrayList folders=new ArrayList(); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); for (int i = 0; i < folders.Count; i++) { FileInfo f = folders[i] as FileInfo; if (f == null) { DirectoryInfo d = folders[i] as DirectoryInfo; d.Delete(); } } } 6.清空文件夹 //using System.IO; Directory.Delete(%%1,true); Directory.CreateDirectory(%%1); 7.读取文件 //using System.IO; StreamReader s = File.OpenText(%%1); string %%2 = null; while ((%%2 = s.ReadLine()) != null){ ATMEGA16读写iic(24c02) C语言程序测试通过 #include while(1) {/* I2C_Write('n',0x00); I2C_Write('c',0x01); I2C_Write('e',0x02); I2C_Write('p',0x03); I2C_Write('u',0x04); */ i=I2C_Read(0x00); //LCD_write_char(0,0,i); USART_TXD(i); i=I2C_Read(0x01); //LCD_write_data(i); USART_TXD(i); i=I2C_Read(0x02); //LCD_write_data(i); USART_TXD(i); i=I2C_Read(0x03); //LCD_write_data(i); USART_TXD(i); i=I2C_Read(0x04); //LCD_write_data(i); USART_TXD(i); } } /*上面上主函数部分*/ #include C语言读写文件操作 #include /************************************************** 24C02.C 功能描述: PC端发送3个数据n0,n1,n2. n0=0,写,将n1写入n2地址中 n0=1,读,读出n1地址中的数据,n2不起作用,但必须有 收到一个字节后,将其地址值显示在数码管第1、2位上,数值显示在第5、6位上 读出一个字节后,将其地址值显示在数码管第1、2位上,读出的值显示在第5、6位上;**************************************************/ #define uchar unsigned char #define uint unsigned int #define Slaw0x0a; //写命令字 #define Slar 0xa1; //读命令字 #include "reg52.h" #include "intrins.h" sbit Scl=P2^1; //串行时钟 sbit Sda=P2^0; //串行数据 bit Rec; //接收到数据的标志 uchar RecBuf[3]; //接收缓冲区 #define Hidden 0x10; //消隐字符在字形码表中的位置 sbit we=P2^7; sbit du=P2^6; uchar code dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; uchar code disptab[]={0x3f,0x6,0x5b,0x4f,0x66, 0x6d,0x7d,0x27,0x7f,0x6f,0x77,0x7c,0x39,0x5e, 0x79,0x71,0x0}; uchar DispBuf[6]; uchar code TH0V al=(65535-3000)/256; uchar code TL0V al=(65535-3000)%256; uchar code th1=0xfd; uchar code tl1=0xfd; //以下是中断程序,用于显示 void timer0() interrupt 1 { static uchar count; uchar tmp; P0|=0x3f; we=1; tmp=dispbit[count]; P0&=tmp; we=0; du=1; C语言中的文件操作 12.1请编写一个程序,把一个文件的内容复制到另一个文件中。 程序如下: #include 程序如下:#include C语言中文件,数据的输入输出,读写. 文件是数据的集合体,对文件的处理过程就是对文件的读写过程,或输入输出过程。 所谓文件是指内存以外的媒体上以某种形式组织的一组相关数据的有序集合。文件分类: 顺序文件,随机文件。 文本文件和二进制文件。 文本文件也称为ASCII文件,在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。 文本文件可以在屏幕上按字符显示,源程序文件就是文本文件,由于是按字符显示,所以能读懂文件内容。 二进制文件是按二进制编码方式来存放的。这里主要讨论文件的打开,关闭,读,写,定位等操作。 文件的存取方法 C程序的输入输出(I/O)有两种方式:一种称为标准I/O或流式I/O,另一种称为低级I/O。流式I/O是依靠标准库函数中的输入输出函数实现的。低级I/O利用操作系统提供的接口函数(称为底层接口或系统调用)实现输入输出,低级I/O 主要提供系统软件使用。 在C语言中用一个FILE类型的指针变量指向一个文件,(FILE类型是系统在stdio.h中定义的描述已打开文件的一种结构类型),这个指针称为文件指针。FILE *指针变量标识符; 如 FILE *fp; 文件的打开与关闭 所谓打开文件,指的是建立文件的各种有关信息,并使文件指针指向该文件,以便对它进行操作。 关闭文件则是断开指针与文件之间的联系,也就禁止再对该文件进行操作。 1、fopen 函数原型:FILE *fopen(const char *filename,const char *mode); Fopen函数用来打开一个文件,前一部分用来说明文件路径及文件名,后一部分mode指出了打开文件的存取方式;返回值是被打开文件的FILE型指针,若打开失败,则返回NULL。打开文件的语法格式如下: 文件指针名=fopen(文件名,使用文件方式); 文件指针名必须被说明为FILE类型的指针变量。 FILE *fp; fp=fopen(“C:\\Windowss\\abc.txt”,”r”); 注意用两个反斜杠\\来表示目录间的间隔符。 存取文件的模式是一个字符串,可以由字母r,w,a,t,b及+组合而成,各字符的含 C语言文件练习题 1.系统的标准输入文件是指_________. a)键盘 b)显示器 c)软盘 d)硬盘 2.若执行fopen函数时发生错误,则函数的返回值是______. a)地址值 b)0 c)1 d)EOF 3.若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是______. a)"ab+" b)"wb+" c)"rb+" d)"ab" 4.fscanf函数的正确调用形式是______. a)fscanf(fp,格式字符串,输出表列) ) 11.下列关于C语言数据文件的叙述中正确的是________ A)文件由ASCII码字符序列组成,C语言只能读写文本文件 B)文件由二进制数据序列组成,C语言只能读写二进制文件 C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 12.函数fseek(pf, OL,SEEK_END)中的SEEK_END代表的起始点是________ A)文件开始B)文件末尾C)文件当前位置D)以上都不对 13.C语言中,能识别处理的文件为_______ A)文本文件和数据块文件B)文本文件和二进制文件 C)流文件和文本文件D)数据文件和二进制文件 14.若调用fputc函数输出字符成功,则其返回值是________ A)EOF B)1 C)0 D)输出的字符 15 已知函数的调用形式:fread(buf,size,count,fp),参数buf的含义是______ A)一个整型变量,代表要读入的数据项总数 B)一个文件指针,指向要读的文件 C)一个指针,指向要读入数据的存放地址 D)一个存储区,存放要读的数据项 16 当顺利执行了文件关闭操作时,fclose函数的返回值是_________ A)-1 B)TRUE C)0 D)1 17.如果需要打开一个已经存在的非空文件“Demo”进行修改下面正确的选项是______ 盘 d) 为pname指定的相应文件开辟一个缓冲区,调用操作系统提供的打开或 建立新文件功能; 22.利用fwrite (buffer, sizeof(Student),3, fp)函数描述不正确的_________. a) 将3个学生的数据块按二进制形式写入文件; b) 将由buffer指定的数据缓冲区内的3* sizeof(Student)个字节的数据写入指定文件; c) 返回实际输出数据块的个数, 若返回0值表示输出结束或发生了错误; d) 若由fp指定的文件不存在,则返回0值; 23.利用fread (buffer,size,count,fp)函数可实现的操作_________. a) 从fp指向的文件中,将count个字节的数据读到由buffer指出的数据区 //实验24C02连接在PF口 //WP、A0、A1、A2都接地,如下图所示。 //单片机:STM32F103 #include "stm32f10x_flash.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #define AT24C02 0xa0 //AT24C02 地址 /******************************** 变量定义 ---------------------------------------------------------*/ GPIO_InitTypeDef GPIO_InitStructure; //GPIO ErrorStatus HSEStartUpStatus; unsigned char Count1 , Count2; unsigned int USEC; static vu32 TimingDelay; unsigned char Readzfc; unsigned char pDat[8] = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};//实验数据unsigned char R_Dat[8]; /*********************************声明函数-----------------------------------------------*/ void RCC_Configuration(void); void SysTick_Configuration(void); void Delay_us_24C02(u32 nTime); /************************************24C02硬件接口 ******************************/ C语言文件操作函数大全 clearerr(清除文件流的错误旗标) 相关函数 feof 表头文件 #include C语言中对文件进行操作如何使用绝对路径? 我编了一个小程序试了一下,好像默认的路径是在生成的.exe文件所在目录下。如果使用像D:\\ABC.TXT这样的路径可以在D盘下对ABC.TXT进行操作,但如果使用D:\\SSS\ABC.TXT就不正确了,创建的文件是SSSABC.TXT,不支持多级的路径,它把路径和文件名弄混了。 到底怎么办 D:\\SSS\\ABC.TXT //你少了个\,在C字符串中,出现\的地方,你一律打两个\\就行了。 请问啊,C语言里,fopen、fread与fwrite的参数中,要求文件名,用写盘符吗? 写绝对路径吗?#include 文件操作函数 C语言 (FILE fputc fgetc fputs fgets fscanf fprintf) 在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。 一、流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在中定义如下: typedef struct { int level; /* fill/empty level of buffer */ unsigned flags; /* File status flags */ char fd; /* File descriptor */ unsigned char hold; /* Ungetc char if no buffer */ int bsize; /* Buffer size */ unsigned char _FAR *buffer; /* Data transfer buffer */ unsigned char _FAR *curp; /* Current active pointer */ unsigned istemp; /* Temporary file indicator */ short token; /* Used for validity checking */ } FILE; /* This is the FILE object */ FILE这个结构包含了文件操作的基本属性,对文件的操作都要通过这个结构的指针来进行,此种文件操作常用的函数见下表函数功能 fopen() 打开流 fclose() 关闭流 fputc() 写一个字符到流中 一这物行时每如一、认识IIC 这是最常用、物理结构上,行信息 传输。时钟。信息传每个器件都有如:存储器)C 总线的工作方最典型的II IIC 系统由一。在数据传输传输的对象和方有一个唯一的地。发送器或接方式 C 总线连接方一条串行数据输时,由主机初方向以及信息地址,而且可 接收器可以在IIC 时方式。 据线SDA 和一条初始化一次数息传输的开始可以是单接收的 在主模式或从模时序24C02的 条串行时钟线数据传输,主和终 止均由的器件(例如 模式下操作,的操作 线SCL 组成。主机使数据在S 主机决定。如:LCD 驱动器 这取决于芯片 主机按一定的SDA 线上传输 器)或者可以接 片是否必须启的通信协议向输的同时还通过接收也可以发启动数据的传从机寻址和进过SCL 线传输发送的器件(例传输还是仅仅被进输例被 寻1I 在低2I 寻址。 1.总线上数据IIC 总线是以在时钟线高电低电平时,才2.总线上的信IIC 总线在传据的有效性 串行方式传输电平期间数据线才允许数据线上信号 送数据过程中输数据,从数据线上必须保持上的电平状态 中共有四种类据字节的最高持稳定 的逻辑态变化,如图 类型信号,它们高位开始传送,辑电平状态,11-2所示。 们分别是:开,每一个数据位高电平为数据 开始信号、停止 位在SCL 上都据1,低电平为 止信号、重新都有一个时钟为数据0。只新开始信号和应脉冲相对应。有在时钟线为应答信号。 为 开的停停重之所开始信号(STA 的时候,例如停止信号(STO 停止信号,结重新开始信号之前,主机通所示,当SCL ART):如图1如,没有主动设OP):如图11结束数据通信。号(Repeated S 通过发送重新开L 为高电平时,1-3所示,当设备在使用总-3所示,当。 START):在I 开始信号,可,SDA 由高电当SCL 为高电总线(SDA 和S SCL 为高电平IC 总线上,由可以转换与当 电平向低电平跳平时,SDA 由CL 都处于高电平时,SDA 由低由主机发送一前从机的通信 跳变,产生重由高电平向低电电平),主机通低电平向高电一个开始信号启信模 式,或是 重新开始信号,电平跳变,产通过发送开始电平跳变,产生启动一次通信是切换到与另 ,它的本质就产生开始信号始(START)信号 生停止信号。信后,在首次另一个从机通信就是一个开始。当总线空闲号建立通信。主机通过发送次发送停止信号信。如图11-信号。 闲 送号3 STM32 模拟IIC读写24C02程序代码 引脚定义和配置: #define SCL GPIO_Pin_6 //24C02 SCL #define SDA GPIO_Pin_7 //24C02 SDA voidGPIO_Configuration(void) { RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1 |RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE, ENABLE); GPIO_InitStructure.GPIO_Pin = SCL; //24C02 SCL GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = SDA; //24C02 SDA 作为输出 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); } void AT24C02_SDA_IO_SET(unsigned char io_set) //SDA引脚输入输出设置 { if(io_set==0) { GPIO_InitStructure.GPIO_Pin = SDA; //24C02 SDA 作为输出 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); } else if(io_set==1) { GPIO_InitStructure.GPIO_Pin = SDA; //24C02 SDA 作为输入 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入 文件操作 //1.定义文件类型指针 FILE *fp; //2. 以只读方式打开文件 fp = fopen(“data.in”, “r”); //3. 判断文件打开是否失败 if (fp==NULL){ printf(“Error 1\n”); return 1; } // 4. 判断整型数据输入是否非法 // ①文件为空或数据格式不符致使输入不成功,即没读到数据 //②输入数据不合题意(假设题目要求3 if ( !(0< lenth && lenth <80) ) { // fgets失败返回0 printf (“Error 2\n”); fclose(fp); //关闭文件 return 2; } // 6. 判断字符输入是否非法: // ①文件为空或数据格式不符致使输入不成功,即没读到字符ch //②输入数据不合题意(假设题目要求ch为数字) if ( ch = fgetc(fp) == EOF || !(…0?<=ch && ch<=’9’ ) ) { // ①||!②printf (“Error 2\n”); fclose(fp); //关闭文件 return 2; } //7. 调用fscanf函数从文件输入n个学生信息的结构体型数据 #define SIZE 60 struct student_type{ unsigned long num; char name[10]; int score[3]; }stud[SIZE]; freopen 目录 函数简介 程序例 函数简介 函数名: freopen 功能: 替换一个流,或者说重新分配文件指针,实现重定向。如果stream流已经打开,则先关闭该流。如果该流已经定向,则freopen将会清除该定向。此函数一般用于将一个指定的文件打开一个预定义的流:标准输入、标准输出或者标准出错。 用法: FILE *freopen(const char *filename,const char *type, FILE *stream); 头文件:stdio.h 返回值:如果成功则返回该指向该stream的指针,否则为NULL。 程序例 举例1: #include C语言程序中关于文件的操作
24c02读写程序大全
Linux下C语言的文件读写
AT24C02串行E2PROM的读写
C语言文件操作大全
ATMEGA16读写iic(TWI)(24c02) C语言程序
C语言读写文件操作
at24c02应用程序
C语言 文件操作
C语言中文件_数据的输入输出_读写
C语言 文件练习题
STM32F103读写24C02 C程序-有硬件电路图和程序
C语言文件操作命令
C语言文件操作之绝对路径
c语言程序中关于文件的操作
24C02数据读写
STM32 模拟IIC读写24C02程序代码
c语言文件操作的语句
C语言文件操作函数freopen