C读写配置文件几种方法|c语言文件读写方式:两种读写方式r和r+到底有什么区别啊

|

① 用C语言读取一个文件中的内容,如何对不同的行进行解析,比如是配置文件

很简单的 配置文件 微软有抓们的一套解析函数 INI文件是Windows系统中一类比较重要的文件,通常用来存放系统或者应用程序的配置信息,以方便系统或者应用 程序在初始化时再次读入。比如Windows系统中的配置文件win.ini和system.ini,它们就主要存放系统启动或用户登陆时的系统信息。这 项功能在方便了系统配置的同时,也为非法程序的自动运行提供了可乘之机。显然,这类文件的重要性应该引起我们的重视。但是对于这样的ini文件的读写操作 却与普通文本文件有着种种的不同,尤其体现在编程实现上。笔者曾经尝试用手动更改的方法在文件中加入一些项,使得自己的程序能够在初始化时自动运行,但是 却没有成功,最后还是藉由编程的方法来实现了。这里主要涉及到一些API函数,而这些函数又往往不被人们所熟知,本文的任务就是在介绍这些函数的同时,用 简单的程序作了示例,下面我们言归正传。先来看几个往配置文件中写入信息的函数:(1)WritePrivateProfileSection()用来在ini文件中直接向指定区域写入键和值的信息,其原型如下:BOOL WritePrivateProfileSection(LPCTSTR lpAppName, // 指向指定字段的字符串LPCTSTR lpString, // 指向要写入的键与值字符串LPCTSTR lpFileName // 指向文件名称字符串,如果不包含完整路径,则在windows目录下创建);用法示例:WritePrivateProfileSection(_T(“windows”),_T(“load=c:\\winnt\\notepad.exe”),_T(“c:\\winnt\\win.ini”));(2)WritePrivateProfileString()与上一个函数的不同点在于其将键和值分开了,原型如下:BOOL WritePrivateProfileString(LPCTSTR lpAppName, // 指向指定字段的字符串LPCTSTR lpKeyName, // 指向指定键的字符串LPCTSTR lpString, // 指向指定值的字符串LPCTSTR lpFileName // 指向文件名称字符串);用法示例:WritePrivateProfileString(_T(“windows”),_T(load”)_T(“c:\\winnt\\notepad.exe”),_T(“c:\\winnt\\win.ini”));(3)WritePrivateProfileStruct()与前面两个的不同在于文件尾有校验和,原型如下:BOOL WritePrivateProfileStruct(LPCTSTR lpszSection, //指向指定字段的字符串LPCTSTR lpszKey, //指向指定键的字符串LPVOID lpStruct, //指向存放要加入的数据的缓冲区,如果为NULL,则删除键UINT uSizeStruct, //缓冲区大小,以字节为单位LPCTSTR szFile //以零结尾的文件名称字符串,如果为空,则向win.ini写入);用法示例:WritePrivateProfileStruct(_T(“windows”),_T(“load”),pBuffer,sizeof(pBuffer),_T(“c:\\winnt\\win.ini”));(4)还有两个函数,是专门用来向win.ini文件写入的,函数原型如下:BOOL WriteProfileSection(LPCTSTR lpAppName, //指向指定字段的字符串LPCTSTR lpString //指向指定值的字符串);BOOL WriteProfileString(LPCTSTR lpAppName, //指向指定字段的字符串LPCTSTR lpKeyName, //指向指定键的字符串LPCTSTR lpString //指向指定值的字符串);下面来看几个对应的从ini文件获取信息的API函数,上面已经说得很详细了,这里只说其中两个:Dword GetPrivateProfileString(LPCTSTR lpAppName, //指向指定字段的字符串LPCTSTR lpKeyName, //指向键的字符串LPCTSTR lpDefault, //如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量LPTSTR lpReturnedString, //存放INI文件中值的目的缓存区DWORD nSize, //目的缓冲区的大小,以字节为单位LPCTSTR lpFileName //指向INI文件名称的字符串); UINT GetPrivateProfileInt(LPCTSTR lpAppName, //指向指定字段的字符串LPCTSTR lpKeyName, //指向键的字符串INT nDefault, //如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量LPCTSTR lpFileName //指向INI文件名称的字符串);程序示例1: 我们在这里建立了一个应用程序“App Name”,并且使用了一个INI文件“appname.ini”,在此INI文件中,我们写入如下内容:[Section1] FirstKey = It all worked out okay. SecondKey = By golly, it works. ThirdKey = Another test. 代码分析如下:#include <stdio.h> #include <windows.h>//主函数main() { //定义局部CHAR inBuf[80]; HKEY hKey1, hKey2; DWORD dwDisposition; LONG lRetCode; // 试图创建INI文件的键值lRetCode = RegCreateKeyEx ( HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT \\CurrentVersion\\IniFileMapping\\appname.ini", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey1, &dwDisposition); //判断是否出错if (lRetCode != ERROR_SUCCESS){ printf ("Error in creating appname.ini key\n"); return (0) ; } //试图设置一个节区的值lRetCode = RegSetValueEx ( hKey1, "Section1", 0, REG_SZ, "USR:App Name\\Section1", 20); //判断是否出错if (lRetCode != ERROR_SUCCESS) { printf ( "Error in setting Section1 value\n"); return (0) ; } //试图创建一个应用名称键值lRetCode = RegCreateKeyEx ( HKEY_CURRENT_USER, "App Name", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey2, &dwDisposition); //判断是否出错if (lRetCode != ERROR_SUCCESS) { printf ("Error in creating App Name key\n"); return (0) ; }//强制系统重新读取映射区的内容到共享内存中,以便于将来对应用程序的调用可//以找到它,而不需要重新启动系统 WritePrivateProfileStringW( NULL, NULL, NULL, L"appname.ini" ); //向INI文件中添加一些键值 WritePrivateProfileString ("Section1", "FirstKey", "It all worked out okay.", "appname.ini"); WritePrivateProfileString ("Section1", "SecondKey", "By golly, it works.", "appname.ini"); WritePrivateProfileSection ("Section1", "ThirdKey = Another Test.", "appname.ini"); //测试一下添加的正确性GetPrivateProfileString ("Section1", "FirstKey", "Bogus Value: Get didn't work", inBuf, 80, "appname.ini"); printf ("%s", inBuf); return(0); }程序示例2:通过修改win.ini中的字段[windows]中的键load或run,或者是为system.ini中的字段[boot]中的键 shell增加值,可以达到设置程序自动运行的目的。假设我们要自动运行notepad.exe,修改后的win.ini或system.ini文件象这 样就可以:win.ini[windows]load=c:\winnt\notepad.exerun=c:\winnt\notepad.exesystem.ini[boot]shell=c:\winnt\explorer.exe c:\winnt\notepad.exe注意:system.ini文件的修改要特别注意,如果你单纯改成shell=c:\winnt\notepad.exe,则不能首先运行 explorer.exe,很明显你将看不到桌面和任务栏,呵呵,笔者在做实验时就曾因为粗心造成了这样的后果,不过不用害怕,只要你用我们下面提供的程 序,将它修改过来就可以了,默认时,系统在system.ini中的[boot]下是shell=c:\winnt\explorer.exe。很多非法 程序就是通过修改这两个文件来达到自启动的目的的。下面这个程序可以在附书光盘中找到,名称为“AutoPlay”,使用VC++6.0写成,核心程序源代码如下:void CAutoRunDlg::OnBrowse() {//只浏览exe文件CfileDialog fileDlg(TRUE,_T("EXE"),_T("*.exe"),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,(_T("Executable Files (*.exe) |*.exe ||")));//显示打开文件的对话框//当操作者选择OK时,程序取得选择文件的全路径名(包括文件的路径及文件名称),并将相应的数值传输给相关的控件变量。if(fileDlg.DoModal()==IDOK){ m_strFileName=fileDlg.GetPathName();//向将变量中的数值传输给控件显示出来。 UpdateData(FALSE);} }void CAutoRunDlg::OnApply() {//更新数据UpdateData(TRUE); //写入ini文件LPCTSTR filename; filename=m_strFileName; WritePrivateProfileString(_T("windows"),_T("load"),filename,_T("c:\\winnt\\win.ini"));}您如果要更改system.ini,可以将WritePrivateProfileString(_T("windows"),_T("load"),filename,_T("c:\\winnt\\win.ini"));改为 WritePrivateProfileString(_T("boot"),_T("shell"),filename,_T("c:\\winnt \\system.ini"));并且在输入文件名时输入c:\winnt\explorer.exe c:\winnt\notepad.exe。写到这里,本文的意图基本达到,如果您可以把某些代码亲自实现,相信读者会有比较大的收获。

② c语言文件读写方式:两种读写方式r和r+到底有什么区别啊

r 只读 为输入打开复一个文本文件(文件必制须存在)w 只写 为输出打开一个文本文件(如没有文件,则新建)a 追加 向文本文件尾添加数据(如没有文件,则新建)rb 只读 为输入打开一个二进制文件wb 只写 为输出打开一个二进制文件ab 追加 向二进制文件尾添加数据r+ 读写 为读写打开一个文本文件(文件必须已经存在)w+ 读写 为读写建立一个新的文本文件a+ 读写 为读写打开一个文本文件(读写指针定位在最后)rb+ 读写 为读写打开一个二进制文件wb+ 读写 为读写建立一个新的二进制文件ab+ 读写 为读写打开一个二进制文件

③ 如何用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

}

(3)C读写配置文件几种方法扩展阅读:

C语言文件读写操作总结

一.非标准文件的读写 不带缓冲的

1.文件的打开和关闭

open()函数的作用是打开文件,其调用格式为: int open(char *filename, int access); 该函数表示按access的要求打开名为filename的文件,返回值为文件描述字,其中access有两部分内容: 基本模式和修饰符, 两者用" "("或")方式连接,修饰符可以有多个, 但基本模式只能有一个。

access的规定

O_RDONLY 只读

O_APPEND 文件指针指向末尾

O_WRONLY 只写

O_CREAT 文件不存在时创建文件, 属性按基本模式属性

O_RDWR 读写

O_BINARY 打开一个二进制文件

O_TEXT 打开一个文字文件

open()函数打开成功, 返回值就是文件描述字的值(非负值), 否则返回-1。 close()函数的作用是关闭由open()函数打开的文件, 其调用格式为: int close(int handle); 该函数关闭文件描述字handle相连的文件。

2.读写函数

int read(int handle, void *buf, int count);

read()函数从handle(文件描述字)相连的文件中, 读取count个字节放到buf所指的缓冲区中, 返回值为实际所读字节数, 返回-1表示出错。返回0 表示文件结束。

write()函数的调用格式为: int write(int handle, void *buf, int count); write()函数把count个字节从buf指向的缓冲区写入与handle相连的文件中, 返回值为实际写入的字节数。

3.随机定位函数

lseek()函数的调用格式为: int lseek(int handle, long offset, int fromwhere);

该函数对与handle相连的文件位置指针进行定位,功能和用法与fseek()函数相同。 tell()函数的调用格式为: long tell(int handle); 该函数返回与handle相连的文件现生位置指针, 功能和用法与ftell()相同

二、标准文件的读写

1.文件的打开函数fopen()

文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来实现对指定文件的存取操作了。

当使用打开函数时,必须给出文件名、文件操作方式(读、写或读写),如果该文件名不存在,就意味着建立(只对写文件而言,对读文件则出错),并将文件指针指向文件开头。若已有一个同名文件存在,则删除该文件,若无同名文件,则建立该文件,并将文件指针指向文件开头。

fopen(char *filename,char *type);

其中*filename是要打开文件的文件名指针,一般用双引号括起来的文件名表示,也可使用双反斜杠隔开的路径名。

而*type参数表示了对打开文件的操作方式。其可采用的操作方式如下:

"r" 打开,只读; "w" 打开,文件指针指到头,只写; "a" 打开,指向文件尾,在已存在文件中追加; "rb" 打开一个二进制文件,只读; "wb" 打开一个二进制文件,只写; "ab" 打开一个二进制文件,进行追加 ;

"r+" 以读/写方式打开一个已存在的文件; "w+" 以读/写方式建立一个新的文本文件 ;"a+" 以读/写方式打开一个文件文件进行追加 ;"rb+" 以读/写方式打开一个二进制文件; "wb+" 以读/写方式建立一个新的二进制文件 ;

"ab+" 以读/写方式打开一个二进制文件进行追加 ;当用fopen()成功的打开一个文件时,该函数将返回一个FILE指针,如果文件打开失败,将返回一个NULL指针。

④ c语言怎么加载自己写的配置文件

我是这么做的,比如 ini 里以 #注释,以=表示赋值## Note #aaa=bbb我从ini里一行一行读出来,如果第一个字母是#,就忽略否则就从 line_of_file 里查找 “=”字符,(去掉行末'\n'换行符)=之前的就是参数名,=之后的就是参数值(去掉空格,tab)(用strncpy)

⑤ 如何在VC中实现配置文件(ini)的读写

配置文件在重要性不言而喻,在我们常用的软件中经常可以看到它的身影,它提供了程序初始化过程中一些常用的参数,并且可以手动的修改这些参数,因此使用起来非常的方便。常见的配置文件为*.ini文件。[小节名]关键字=值关键字=值……MFC为用户读取ini文件提供了几个函数,其中常用的几个函数分别如下:读取信息:GetPrivateProfileString和GetPrivateProfileInt写入信息:WritePrivateProfileString运用这几个函数就可以满足常用的对字符串和整数的读写操作了。为了体现MFC的封装性以及方便使用,我们可以定义一个接口,即一个纯虚类。所有的方法都由这个接口继承而来。我们将这个纯虚类命名为CCfgFile,之后我们从这个纯虚类中继承一个类(CIniFile)用来实现对ini文件的读取。以后若是需要一些更高级的方法可以再从CCfgFile继承出其他的类来实现。这样我们就可以利用CIniFile类中定义的函数来操纵ini文件了。在程序中我们需要操作ini文件中一些常用的配置参数读写,我们可以定义一个参数类来实现,如CParam这里需要注意的是在程序中我们可能在很多地方都要实现配置参数的读写,我们不能在每个要使用的地方都通过new关键字来创建一个CParam对象。原因你懂的,呵呵!那么我们可以通过定义CParam的一个静态成员来实现,这个静态成员通过一个静态的成员函数来获取。

⑥ 怎么使用C语言读取properties配置文件

用C语言读取properties配置文件的方法:1、找到配置路径下的properties文件2、按行读取文件内容具体实现代码如下://定义读入的行数组,1024行charline[1024];//存放配置项数组settingintsetting[N],i=0;//开始循环读入while(fgets(fp,line,1024)!=NULL){//读入配置的值给line变量fscanf(line,"setting%*d=%d",&setting[i++]);}

⑦ 用C#如何读写配置文件

INI文件就是扩展名为”ini”的文件。x0dx0a其一般形式如下:x0dx0a[section1] // 配置节x0dx0a//键名 //键值x0dx0akeyword1 = valuelx0dx0akeyword2 = value2x0dx0a??x0dx0a[section2]x0dx0akeyword3 = value3x0dx0akeyword4 = value4x0dx0a在Windows系统中,INI文件是很多,最重要的就是”System.ini”、”System32.ini”和”Win.ini”。该文件主要存放用户所做的选择以及系统的各种参数。用户可以通过修改INI文件,来改变应用程序和系统的很多配置。但自从Windows 95的退出,在Windows系统中引入了注册表的概念,INI文件在Windows系统的地位就开始不断下滑,这是因为注册表的独特优点,使应用程序和系统都把许多参数和初始化信息放进了注册表中。以及XML文件的国际标准化给INI文件又一次打击。x0dx0a但在某些场合,INI文件还拥有其不可替代的地位。比如绿色软件的规定就是不向注册表和系统中填入新东西。对于软件需要储存的信息就需要存入到文件中了。XML虽然兼容性比较好,但对于仅仅保存几个自定义参数而言就显得大材小用了。这是就可以选择使用快速简单的储存方式:INI文件。x0dx0a本文就来探讨一下C#是如何对INI进行读写操作。x0dx0a主要思路是调用Win32 API。x0dx0a1.引入命名空间x0dx0ausingSystem.Runtime.InteropServices;x0dx0a2.声明(把一个Win32 API函数转成C#函数)x0dx0a//声明INI文件的写操作函数 WritePrivateProfileString()x0dx0a[DllImport(“kernel32”)]x0dx0aprivate static extern longWritePrivateProfileString(string section, string key, string val, stringfilePath);x0dx0a//声明INI文件的读操作函数 GetPrivateProfileString()x0dx0a[DllImport(“kernel32”)]x0dx0aprivate static extern intGetPrivateProfileString(string section, string key, string def, StringBuilderretVal, int size, string filePath);x0dx0a3.函数x0dx0apublic void Writue(string section,string key, string value)x0dx0a{x0dx0a// section=配置节,key=键名,value=键值,path=路径(section,key, value, sPath);x0dx0a}x0dx0apublic string ReadValue(stringsection, string key)x0dx0a{x0dx0a// 每次从ini中读取多少字节x0dx0aSystem.Text.StringBuilder temp =new System.Text.StringBuilder(255);x0dx0a// section=配置节,key=键名,temp=上面,path=路径x0dx0aGetPrivateProfileString(section,key, “”, temp, 255, sPath);x0dx0areturntemp.ToString(); //注意类型的转换x0dx0a}x0dx0a到此基本功能已经实现了。下面我们将所有的代码重新整合一下:x0dx0anamespace Library.Filex0dx0a{x0dx0apublic class Inix0dx0a{x0dx0a// 声明INI文件的写操作函数 WritePrivateProfileString()x0dx0a[System.Runtime.InteropServices.DllImport(“kernel32”)]x0dx0aprivate static extern longWritePrivateProfileString(string section, string key, string val, stringfilePath);x0dx0a// 声明INI文件的读操作函数 GetPrivateProfileString()x0dx0a[System.Runtime.InteropServices.DllImport(“kernel32”)]x0dx0aprivate static extern intGetPrivateProfileString(string section, string key, string def,System.Text.StringBuilder retVal, int size, string filePath);x0dx0aprivate string sPath = null;x0dx0apublic Ini(string path)x0dx0a{x0dx0athis.sPath = path;x0dx0a}x0dx0apublic void Writue(string section,string key, string value)x0dx0a{x0dx0a// section=配置节,key=键名,value=键值,path=路径(section,key, value, sPath);x0dx0a}x0dx0apublic string ReadValue(stringsection, string key)x0dx0a{x0dx0a// 每次从ini中读取多少字节x0dx0aSystem.Text.StringBuilder temp =new System.Text.StringBuilder(255);x0dx0a// section=配置节,key=键名,temp=上面,path=路径x0dx0aGetPrivateProfileString(section,key, “”, temp, 255, sPath);x0dx0areturn temp.ToString();x0dx0a}x0dx0a}x0dx0a}x0dx0a开始调用函数。x0dx0a// 写入inix0dx0aIni ini = newIni(“C:/config.ini”);x0dx0aini.Writue(“Setting”,”key1″, “HELLO WORLD!”);x0dx0aini.Writue(“Setting”,”key2″, “HELLO CHINA!”);x0dx0a// 读取inix0dx0aIni ini = newIni(“C:/config.ini”);x0dx0astring str1 =ini.ReadValue(“Setting”, “key1”);x0dx0aMessageBox.Show(str1);x0dx0a二,在一些小的应用中,有时候不需要使用数据困这样大规模的数据管理工具,也很少进行数据的查询、修改等操作,而仅用文件来存储数据。这时就需要使用。net中的文件操作对象,如file、streamReader、streamWriter等。x0dx0a1,使用File对象操作文件x0dx0aSystem.IO.File类提供了一系类的静态办法,完成对晚间的常用操作,如新建、删除、拷贝、移动等x0dx0a2,使用StreamWriter写入文件x0dx0a在System.IO空间中定义了一个文件写入器对象StreamWriter,使用它可以以一种特定的编码向输出流中(Stream)写入字符。x0dx0a3,使用SteamReader读取文件x0dx0a与streamWrite对应

⑧ c语言读写配置文件

#include <stdio.h>#include <string.h>#define MAX_BUF 20#define SERVER "localhost"#define CONFIG_FILE "1.conf"bool SetAuthServer(char* strServerAdd){ char buf[MAX_BUF], tempBuf[MAX_BUF]; memset(buf, 0, MAX_BUF); memset(tempBuf, 0, MAX_BUF); FILE *pF = fopen(CONFIG_FILE, "r"); if(!pF) { printf("打开文件失败!\n"); return false; } fread(buf, MAX_BUF, 1, pF); if(!feof(pF)) { printf("读取不完整,请把MAX_BUF设置为大一点, 当前大小为: %d\n", MAX_BUF); fclose(pF); return false; } fclose(pF); char *lpPos = buf; char *lpNewPos = buf; while(lpNewPos = strstr(lpPos, SERVER)) { strncpy(tempBuf+strlen(tempBuf), lpPos, lpNewPos-lpPos); strcat(tempBuf, strServerAdd); lpPos = lpNewPos + strlen(SERVER); } strcat(tempBuf, lpPos); pF = fopen(CONFIG_FILE, "w"); if(!pF) { printf("打开文件失败!\n"); return false; } fwrite(tempBuf, strlen(tempBuf), 1, pF); fclose(pF); return true;}void main(){ char buf[20]; printf("请输入一个字符串来修改服务器配置: "); scanf("%s", buf); if(SetAuthServer(buf) == true) printf("修改成功!\n"); else printf("修改失败!\n"); }

⑨ c写文件的几种模式

文件文件的分类:按照用户角度分:①设备文件:如显示器(printf)标准输出文件;键盘(scanf)标准输入文件②普通文件:存放在磁等介质上的文件按照文件的逻辑结构上分:①记录文件(有定长记录、不定长记录两种)②流式文件(由字符数据顺序组成如c语言程序)按照文件的编码方式:①文本文件(又称ascii文件,每个字节存放一个ascii码)(.c、.cpp、.h、.txt、.ini、)(常见的有五种)②二进制文件(binary file)文件操作函数:一、文件的打开:文件指针名=fopen(“path\文件名”,“打开文件方式”)“文件打开方式”:rt-只读打开文本文件wt-只写打开文本文件at-追加打开文本文件,并在末尾写数据。 rb-只读打开二进制文件wb-只写打开二进制文件ab-追加打开二进制文件,并在末尾写数据。 rt+-读写打开文本文件,允许读写wt+-读写打开或建立一个文本文件,允许读写。at+-读写打开一个文本文件,允许读或在文件末尾追加数据。 rb+-读写打开二进制文件,允许读写wb+-读写打开或建立一个二进制文件,允许读写。ab+-读写打开一个二进制文件,允许读或在文件末尾追加数据。 r+w:可读写文件(具体是二进制文件还是文本文件要看打开文件的扩展名而定)例如:fp=fopen(“C.dat”,“w+b”) 文件打开模式只有r、w、a、t、b、+、这六个字符拼成。w:用w打开的文件只能向该文件写入数据(更准确是建立一个新的文件)(即将 信息从程序写入磁盘中)a:用a打开对我文件只能向已存在的文件中追加信息①对于文本文件应注意:从程序中读入内存时,要将ASCII码转换成二进制码;而 把文件以文本形式写入磁盘时,要将二进制码转换为ASCII码。②fopen函数将返回一个文本文件结构的指针(该文件不存在时,返回NULL)文件的关闭:fclose(fp);(作用强制性将存放在缓中的未满的数据写入到磁盘中, 然后释放文件指针,使其真正写入磁盘中)fclose(fp);关闭成功时返回0,失败时返回EOR文件的读写:读字符函数— fgetc()调用格式:字符变量=fgetc(文件指针(fp));函数说明:读字符时,文件必须以“读”或者“读写”的方式打开读取的结果也可以不向字符变量赋值。例如fgetc(fp)每读一个字符文件内部指针向前移动一个字符(文件内部指针不是文件指针,文件内部直镇不需要程序中定义说明由系统自动设置)返回值:fgetc(fp):成功时函数返回读入的一个字符,若读到文件尾时或者出错时,返回值为“EOF”。写字符函数—fputc()调用格式:fputc(字符量(常量或者变量),文件指针(fp))函数说明:写字符时,文件可以用“写”“读写”“追加”的方式打开文件写或者是读写的方式打开文件时,原有的内容将会被清除,从文件首部开始写入字符;若以追加的方式打开文件时,将在文件末尾开始写入字符。函数的返回值:写入成功时,返回写入的字符;失败时,则会返回“EOF”每写入一个字符,“文件内部位置指针”向后移动一个字符读字符串函数—fgets()调用格式:fgets(字符数组名,n,文件指针(fp))函数说明:N是一个正整数,表示从文件中读取的字符串不超过N-1个字符。读入最后一个字符后加上字符串结束标志'\0'.读取过程中,遇到换行或者文件结束标志“EOF”(end of file)时,读取字符串结束。写字符串函数—fputs()调用格式:fputs(字符串量,文件指针)(字符串量,即可是字符串变量(c中为字符数组),由可是字符串常量)函数说明:无///////////////////////////////////////////////////////////////–这部分有点小问题(程序运行不了)读数据块函数—fread()调用格式:fread(p,size,n,fp)函数说明:P:指向输入/输出数据块的首地址的指针Size:某类型数据存储空间的字节数(数据项大小)N:此次从文件中读取的数据项数Fp:文件指针变量写数据块函数—frite()调用格式:fread (p,size,n,fp)函数说明:P:指向输入/输出数据块的首地址的指针Size:某类型数据存储空间的字节数(数据项大小)N:此次从文件中读取的数据项数Fp:文件指针变量注意:fread、fwite函数在调用成功时,函数返回值为n的值,即输出的项数;如果失败,则返回(0)。


赞 (0)