当前位置:三九宝宝网 → 宝宝教育 → 教学论文 → 正文

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

更新:02-03 整理:39baobao.com
字体:

[需要一个关于c语言文件的读取方面的题目要有程序!]就这样被 #include "stdio.h" char str[11]; char *max; int maxid; int main() { FILE *fp1; FILE *fp2; int i; fp1=fopen("ch1.dat","r"); fp2=fopen("t2.dat","w"); for(i=1;ifsca...+阅读

很简单的 配置文件 微软有抓们的一套解析函数 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#include//主函数 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_...

本文地址:https://www.39baobao.com/show/29_35562.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.

以下为关联文档:

C语言发个if嵌套循环的例子解析if while for do while 都可以嵌套 // lz98.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include#include#include "string.h" #define Q 2 #define W 5 #defin...

求C语言快排非递归算法解析。非递归。//快排非递归算法void merge(int a[], int low, int center, int high){//这里的merge与教科书上有不同。我们用两个数组L[],R[]来存储a[]需要合并的两段 int i = 0; int j...

C语言文件读取到结构体数组/* 参考代码如下: "stuInfo.txt"文件中是一些学生的姓名、宿舍号、学号. 定义一个学生结构体,其中成员包括学号(char num[10])、姓名(name)、宿舍号(dormNum)。 1.从文件中读取数据,存...

c语言分段读取文本文件1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 #include "stdio.h" intmain() { FILE*pf=NULL; //文件指针 in...

C语言如何读取一行数据以空格分开C语言的<string.h&gt;中有一个strtok函数可以用来分割单词,见下面的程序: #include <stdio.h> #include <string.h> char buf[1000000]; int main() { FILE *fin; char *p; fin...

c语言如何读取逗号分隔的字符串将逗号间的字符串分别提取出来先将所有的读进来存在一个字符串中,然后用字符分割函数strtok()//具体可参见API 例如: char str[] = "now # is the time for all # good men to come to the # aid of their co...

C语言从txt文件中读取多行用逗号分隔数据保存在数组ai别听最快回答 他的程序不会处理输入的个数 这道题说白了就是处理逗号 #include<stdio.h> using namespace std; int a[2013]; int x; int i=1; int main() { freopen("test.i...

C语言中如何读取以逗号分割的文件中的数据包括字符串每次用fgets读取整行,然后扫描一遍,看看逗号数量是不是足够一个完整结构体了。 如果不够,继续fgets,注意要读取到上一次fgets内容的末尾。然后再度检查逗号数量。 如果逗号数量...

解析出自我正面情绪的20个形容词心理学基本情绪是人和动物共有的,不学而会的,又叫原始情绪, 有文化共通性。基本情绪的种类有不同的分法,近代研究中常把快乐、愤怒、悲哀和恐惧列为情绪的基本形式。情绪是对一系列主...