用VC打开in.dat和out.dat文件的方法
《C++程序设计》学习笔记总结 - 第八章 文件操作
第八章文件操作一、文件基本概念和文件流类文件基本概念和文件流类从不同的角度来看待文件就可以得到不同的文件分类。
C++根据文件数据的编码方式不同分为文本文件和二进制文件。
根据存取方式不同分为顺序存取文件和随机存取文件所谓“文本文件”和“二进制文件”是从文件格式的角度进行分类,是约定俗成的、从计算机用户角度出发进行的分类。
所谓的“顺序存取文件”和“随机存取文件”是根据访问文件中数据的方式来划分的。
顺序存取文件就是按照文件中数据存储次序进行顺序操作,为访问第i 个数据,就首先要访问第i-1个数据,在整个文件操作过程中,将移动位置指针的工作交给系统自动完成。
磁带文件就是一个典型的顺序存取文件。
随机访问文件是根据应用的需要,通过命令移动位置指针直接定位到文件内需要的位置并进行数据操作。
对文件的基本操作分为读文件和写文件。
所谓“读文件”就是将文件中的数据读入内存之中,也称为“输入”。
所谓“写文件”就是将内存中的数据存入文件之中,也称为“输出”。
C++标准类库中有3个流类可以用于文件操作,这3个类统称为文件流类,分别如下:1)ifstream:用于从文件中读取数据。
2)ofstream:用于向文件中写入数据。
3)fstream:既可用于从文件中读取数据,又可用于向文件中写入数据。
使用这3个流类时,程序中需要包含fstream头文件。
类ifstream和类fstream都是从类istream派生而来的,因此类ifstream拥有类istream的全部成员函数。
同样,类ofstream和类fstream也拥有类ostream的全部成员函数。
这3个类中有一些十分熟悉的成员函数可以使用,如operator<<、operator>>、peek( )、ignore( )、getline( )、get( )等。
在程序中,要使用一个文件,必须包含3个基本步骤:打开(open)文件——操作文件——关闭(close)文件。
CXAX快捷键
CAXA快捷键大全界面操作:编辑操作:显示操作:CAXA快捷键默认分类2008-07-03 11:32:49 阅读669 评论2 字号:大中小订阅CAXA2007命令、快捷键列表之快捷键快捷键功能Ctrl+A 选择所有Ctrl+B 显示/隐藏标准工具Ctrl+C,Ctrl+Ins 复制Ctrl+E 显示/隐藏属性工具Ctrl+I 显示/隐藏立即菜单Ctrl+M 显示/隐藏主菜单Ctrl+N 新文件Ctrl+O 打开文件Ctrl+P 绘图输出Ctrl+Q 属性查看Ctrl+S 存储文件Ctrl+T 显示/隐藏状态栏Ctrl+U 显示/隐藏常用工具Ctrl+V,Shift+Ins 粘贴Ctrl+W 在新窗口中打开文件Ctrl+X,Shift+Del 图形剪切Ctrl+Y 重复操作(redo) Ctrl+Z 取消操作(undo)Ctrl+1 显示隐藏绘图工具Ctrl+2 显示绘图工具ⅡCtrl+3 显示标注工具Ctrl+4 显示编辑工具Ctrl+5 显示块操作工具Ctrl+6 显示库操作工具Alt+X 退出Del 删除对象End 在输入框中用于将光标移至行尾。
F1 请求系统的帮助。
F2 拖画时切换动态拖动值和坐标值。
F3 显示全部。
F4 指定一个当前点作为参考点。
用于相对坐标点的输入。
F5 当前坐标系切换开关。
F6 点捕捉方式切换开关,它的功能是进行捕捉方式的切换。
F7 三视图导航开关。
F8 正交与非正交切换开关。
F9 全屏显示和窗口显示切换开关。
Home 在输入框中用于将光标移至行首,其他情况下用于显示复原。
PageDown 显示缩小PageUp 显示放大Shift+鼠标右键,鼠标滚轮动态缩放Shift+鼠标左键,鼠标中键动态平移方向键(↑↓→←)在输入框中用于移动光标的位置,其他情况下用于显示平移图形。
圆心_半径_起终角 acra 以圆心半径起终角的方式绘制圆弧圆心_起点_圆心角 acsa 通过圆心起点圆心角的方式绘制圆弧三点 appp 过三点画圆弧两点_半径 appr 以两点半径的方式绘制圆弧起点_终点_圆心角 asea 以起点终点圆心角的方式绘制圆弧。
组数据文件IN.DAT
cnt++; /*统计满足条件的数的个数*/
sum+=i; /*将满足条件的数求和*/
}
已知数据文件IN.DAT中存有300个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsValue( ),其功能是:求出这些4位数是素数的个数cnt,再把所有满足此条件的4位数依次存入数组b中,然后对数组b的4位数按从小到大的顺序进行排序,最后调用函数writeDat()把数组b中的数输出到OUT.DAT文件中。
计算方差的公式如下:
void Compute(void)
{
int i,tt[MAX]; /*定义数组tt计算总和*/
for(i=0;i<1000;i++)
if(xx[i]%2!=0) /*判断当前数的奇偶性*/
{
odd++; /*统计奇数的个数*/
a1=xx[i]%10; /*求正整数的个位数*/
if((a4+a3+a2+a1)%2==1)
{ /*如果各位数字之和是奇数*/ /*计算满足条件的数的个数totCnt和这些数的总和sum*/
totCnt++;
totPjz+=xx[i];
for(j=i+1;j<cnt;j++)
if(b[i]>b[j])
{
temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}已知在文件IN.DAT中存有若干个(个数<200)4位数字的正整数,函数ReadDat()是读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求是:(1)求出这个文件中共有多少个正整数totNum。(2)求出这些数中的各位数字之和是奇数的个数totCnt,以及满足此条件的这些数的算术平均值totPjz。最后调用函数WriteDat()把所有结果输出到文件OUT.DAT中。void CalValue()
c++文本文件打开读写的常用方法
c++文本文件打开读写的常用方法一、文本文件的打开1、使用C++中标准的文件输入和输出流操作文本文件<iostream>头文件提供标准文件输入输出流std::cin,std::cout,std::cerr,std::clog这些标准输入输出流是指C++语言中自带的几个文件输入输出流。
比如在程序中,若要从控制台读取输入:std::cin >> a;这条语句将从控制台(也就是键盘)获取输入,并将其输入存储在a中。
如果要从文件中读取数据,可以使用标准输入流std::ifstream 完成。
std::ifstream可以被用来从文件中读取输入。
具体实现方法如下:// step 1: include the input stream#include <fstream>// step 2: open filestd::ifstream infile('file.txt');// step 3: read input from fileint data;infile >> data;// step 4: close fileinfile.close();2、使用C++的平台独立文件输出流操作文本文件C++中有一套不依赖具体平台的文件输入输出流。
它们是std::fstream,std::ifstream和std::ofstream。
这三个类分别用来操作文件的输入流,输出流和读写流。
具体使用方法如下:// step 1: include the input/output stream#include <fstream>// step 2: open filestd::fstream f('file.txt', std::ios::in | std::ios::out); // step 3: read/write to filechar c;f.get(c);f.put(c);// step 4: close filef.close();二、文本文件的读取要将文本文件读入内存,程序需要打开文本文件,然后以块的形式从磁盘加载到内存。
vc文件读写使用
CFile和CStdioFile的文件读写使用方法(2009-08-18 10:35:01)标签:杂谈CFile//创建/打开文件CFile file;file.Open(_T("test.txt"),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeRead Write);文件打开模式可组合使用,用“|”隔开,常用的有以下几种:CFile::modeCreate:以新建方式打开,如果文件不存在,新建;如果文件已存在,把该文件长度置零,即清除文件原有内容。
CFile::modeNoTruncate:以追加方式打开,如果文件存在,打开并且不将文件长度置零,如果文件不存在,会抛出异常。
一般与CFile::modeCreate一起使用,则文件不存在时,新建一个文件;存在就进行追加操作。
CFile::modeReadWrite:以读写方式打开文件。
CFile::modeRead:只读。
CFile::modeWrite:只写。
//写入数据CString strValue = "Hello World!";file.Write(strValue,strValue.GetLength());//追加数据file.SeekToEnd(); //将指针移至文件末尾进行追加file.Write(strValue,strValue.GetLength());//关闭文件file.Close();CStdioFileCStdioFile是CFile的派生类,对文件进行流式操作,对于文本文件的读写很有用处,可按行读取写入。
//写入数据CString strValue = "Hello World!";file.WriteString(strValue);//读取数据CString strRead;file.ReadString(strRead);当文件存在多行数据需要逐行读取时,可用函数BOOL CStdioFile::ReadString(CString& rString),当遇到"\n "时读取截断,如果文件未读完,返回true,否则返回false。
VC中调用外部程序方式总结
目前知道三种方式:WinExec,ShellExecute ,CreateProcess,别人已经总结的很好了《vc中调用其他应用程序的方法(函数)winexec,shellexecute ,createprocess》,我全文转载一下,另外后面加点自己的总结(黑体部分,除了标题)。
三个SDK函数: WinExec,ShellExecute ,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,CreateProcess最为复杂。
WinExec 两个参数,前一个指定路径,后一个指定显示方式。
ShellExecute 可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute还可以打开网页,启动相应的邮件关联发送邮件等等。
CreateProcess 一共有十个参数,不过大部分都可以用NULL代替,它可以指定进程的安全属性,继承信息,类的优先级等等。
如果我们要得到足够多的关于新的进程的信息,控制新的进程的细节属性,若要达到这些目的,我们就需要使用CreateProcess函数了。
三个SDK函数(WinExec、ShellExec、CrateProcess )的语法:(一)WinExec这个函数最简单,只有两个参数,原型如下:UINT WinExec(LPCSTR lpCmdLine, // 命令路径UINT uCmdShow // 显示方式);使用方法如下:WinExec("Notepad.exe", SW_SHOW); // 打开记事本WinExec("D:\\Program Files\\Test\\Test.exe",SW_SHOWMAXIMIZED); // 以最大化的方式打开Test.exe需要注意的是若用SW_SHOWMAXMIZED 方式去加载一个无最大化按钮的程序,譬如Neterm,Calc 等等,就不会出现正常的窗体,但是已经被加到任务列表里了。
C语言156道经典习题
第1题、函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS10.DAT中。
替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。
部分源程序存在文件prog1.c中。
原始数据文件存放的格式是:每行的宽度均小于80个字符。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
第2题、函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。
请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。
条件:从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换。
如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。
例如:位置0 1 2 3 4 5 6 7 8源字符串 d c b a h g f e4 3 2 1 9 8 7 6 5则处理后字符串 h g f e a b c d8 7 6 5 9 1 2 3 4部分源程序存在文件prog1.c中。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
第3题、函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS8.DAT中。
C++读取INI文件
C++读取INI⽂件VC++中 3 个主要写⼊/读取配置⽂件ini的函数:bool WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName);写⼊.ini⽂件;DWORD GetPrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpDefaut,LPSTR lpReturnedString,DWORD nSize,LPCTSTR lpFileName);读取.ini⽂件;UINT GetPrivateProfileInt(LPCTSTR lpAppName,LPCTSTR lpKeyName,INT nDefault,LPCTSTR lpFileName);读取整形值。
其中个参数的意思:LPCTSTR lpAppName ------- INI⽂件中的⼀个字段名LPCTSTR lpKeyName ------- lpAppName 下的⼀个键名,也就是⾥⾯具体的变量名LPCTSTR lpString ------- 是键值,也就是变量的值,必须为LPCTSTR或CString类型LPCTSTR lpFileName ------- 完整的INI⽂件路径名LPCTSTR lpDefaut ------- 如果没有其前两个参数值,则将此值赋给变量LPSTR lpReturnedString ------- 接收INI⽂件中的值的CString对象,即接收缓冲区DWORD nSize ------- 接收缓冲区的⼤⼩例⼦:CString StrName,Strtemp;int nAge;StrName = "jacky";nAge = 13;WritePrivateProfileString("Student","Name",StrName,"c:\\setting.ini");结果:(INI⽂件中显⽰如下:)[Student]Name=jacky读取:CString SName;GetPrivateProfileString("Student","Name","DefaultName",SName.GetBuffer(MAX_LENGTH),MAX_LENGTH,"c:\\setting.ini");结果:SName = "jacky";这⾥需要注意点就是⽤完GetBuffer函数后⼀定要释放(⽤SName.ReleaseBuffer()函数),不然后⾯再⽤到SName的其他⼦函数就会失灵。
c语言教程 part 8(total 8)
函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到字符串数 组xx中; 请编制函数StrOR( ), 其函数的功能是: 以该文章中的行为 单位依次扫描一行字符串中的小写字母o,每次将小写母o的左右字符 串部分作交叉换位,即左边字符串移到小写字母o的右边,而原先右边 的则反之, 并把小写母o删除,依次直至这一行中的小写母o处理完,之 后把已处理的字符串仍按行重新存入字符串数组xx中。 最后main()函数调用函数WriteDat()把结果xx输出到文件OUT.DAT中。 例如原文: you have the correct record. 第1个o: u have the correct record.y 第2个o: rrect record.yu have the c 第3个o: rd.yu have the crrect rec 提示: 可使用临时变量来保存小写字母o左边的字符串。 原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含标点 符号和空格。 注意: 部分源程序存放在PROG1.C中。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数 WriteDat()的内容。(07套)
分析
xx[i]
he have the correct record.
如何在字符串中查找’o’字符 p=strchr(xx[i],’o’)返回’o’字符的指针 p
xx[i] after
he have the correct record.
rrect record.
he have the c
before
1.利用for循环依次读取文章中的 所有行,在读取过程中,并对所读 取的字符串xx[i]进行处理。 2. 找出小写字母'o',如果存在, 则通过中间变量来保存字符串, before是保存字母'o'左边的字符串, after是保存字母'o'右边的字符串, 接着把两个字符串before和after字 符串仍加到原字符串上xx[i],直到 处理完行中所有的字母'o'为止。
DorisInSAR处理基本步骤和基本参数设定
1,Doris处理可以分步处理,也可以整体处理。
Doris处理要先生成模板文件,doris每步处理都对应一个模板文件,这些模板文件包含了doris每步处理所需要的参数,因此用户可以直接打开模板文件,用以编辑更改然后保存,也可以在linux终端中采用Vi命令,或nedit(相当于window下的写字板)来进行编辑保存。
2,查看版本信息,终端键入:doris 即可查看。
3,生成模板。
命令:run –g说明:会在当前工作目录下生成模板文件,它包含三个文件夹目录:Inputfiles,Outdata ,Outinfo。
Outdata用于存放每步生成的结果数据文件。
Outinfo用于存放每步处理的log文件,记录中间处理过程。
Inputfiles中存放的就是模板文件。
它包含的文件:对这些模板进行编辑时,文件中每行前面加c和空格,表示程序处理时不读取该行参数,否则都会执行到的,编辑参数选项时直接更改后面的的数值即可。
4,doris处理步骤总体介绍。
Doris的INSAR处理共分八步:每步又可以分为许多小步,可以通过编辑来选择执行或不执行某些小步骤(小步骤在模板文件中的标识符为process)第一步run –s1:读入主影像的头文件及数据体信息以及轨道信息(可以使用粗轨),其对应的模板文件 input.m_initial.,这步包含:读取主影像头文件信息,读取主影像数据体信息,主影像过采样,读取主影像精轨文件。
(如下:加c 表示屏蔽该行,以下都同)第二步run –s2:读入辅影像的头文件及数据体信息以及轨道信息(可以使用粗轨),其对应的模板文件:input.s_initial。
这步包含:读取辅影像头文件信息,读取辅影像数据体信息,辅影像过采样,读取辅影像精轨文件。
第三步run –s3:影像配准。
对应的模板文件:input.coregistration.包含步骤有:一级轨道级配准,二级像素级粗配准,三级子像素级精配准,主影像方位向滤波,辅影像方位向滤波,以及影像距离向滤波。
CC++读写文本文件、二进制文件的方法
CC++读写⽂本⽂件、⼆进制⽂件的⽅法⼀:⽬的掌握C语⾔⽂本⽂件读写⽅式;掌握C语⾔⼆进制⽂件读写⽅式;掌握CPP⽂本⽂件读写⽅式;掌握CPP⼆进制⽂件读写⽅式;⼆:C语⾔⽂本⽂件读写1. ⽂本⽂件写⼊//采⽤C模式对Txt进⾏写出void TxtWrite_Cmode(){//准备数据int index[50] ;double x_pos[50], y_pos[50];for(int i = 0; i < 50; i ++ ){index[i] = i;x_pos[i] = rand()%1000 * 0.01 ;y_pos[i] = rand()%2000 * 0.01;}//写出txtFILE * fid = fopen("txt_out.txt","w");if(fid == NULL){printf("写出⽂件失败!\n");return;}for(int i = 0; i < 50; i ++ ){fprintf(fid,"%03d\t%4.6lf\t%4.6lf\n",index[i],x_pos[i],y_pos[i]);}fclose(fid);}2. ⽂本⽂件读取//采⽤C模式对Txt进⾏读取void TxtRead_Cmode(){FILE * fid = fopen("txt_out.txt","r");if(fid == NULL){printf("打开%s失败","txt_out.txt");return;}vector<int> index;vector<double> x_pos;vector<double> y_pos;int mode = 1;printf("mode为1,按字符读⼊并输出;mode为2,按⾏读⼊输出;mode为3,知道数据格式,按⾏读⼊并输出\n");scanf("%d",&mode);if(mode == 1){//按字符读⼊并直接输出char ch; //读取的字符,判断准则为ch不等于结束符EOF(end of file)while(EOF!=(ch= fgetc(fid)))printf("%c", ch);}else if(mode == 2){char line[1024];memset(line,0,1024);while(!feof(fid)){fgets(line,1024,fid);printf("%s\n", line); //输出}}else if(mode == 3){//知道数据格式,按⾏读⼊并存储输出int index_tmp;double x_tmp, y_tmp;while(!feof(fid)){fscanf(fid,"%d%lf%lf\n",&index_tmp, &x_tmp, &y_tmp);index.push_back(index_tmp);x_pos.push_back(x_tmp);y_pos.push_back(y_tmp);}for(int i = 0; i < index.size(); i++)printf("%04d\t%4.8lf\t%4.8lf\n",index[i], x_pos[i], y_pos[i]);}fclose(fid);}三:C语⾔⼆进制⽂件读写1. ⼆进制⽂件写⼊//采⽤C模式写⼆进制⽂件void DataWrite_CMode(){//准备数据double pos[200];for(int i = 0; i < 200; i ++ )pos[i] = i ;//写出数据FILE *fid;fid = fopen("binary.dat","wb");if(fid == NULL){printf("写出⽂件出错");return;}int mode = 1;printf("mode为1,逐个写⼊;mode为2,逐⾏写⼊\n");scanf("%d",&mode);if(1==mode){for(int i = 0; i < 200; i++)fwrite(&pos[i],sizeof(double),1,fid);}else if(2 == mode){fwrite(pos, sizeof(double), 200, fid);}fclose(fid);}2.⼆进制⽂件读取//采⽤C模式读⼆进制⽂件void DataRead_CMode(){FILE *fid;fid = fopen("binary.dat","rb");if(fid == NULL){printf("读取⽂件出错");return;}int mode = 1;printf("mode为1,知道pos有多少个;mode为2,不知道pos有多少个\n"); scanf("%d",&mode);if(1 == mode){double pos[200];fread(pos,sizeof(double),200,fid);for(int i = 0; i < 200; i++)printf("%lf\n", pos[i]);free(pos);}else if(2 == mode){//获取⽂件⼤⼩fseek (fid , 0 , SEEK_END);long lSize = ftell (fid);rewind (fid);//开辟存储空间int num = lSize/sizeof(double);double *pos = (double*) malloc (sizeof(double)*num);if (pos == NULL){printf("开辟空间出错");return;}fread(pos,sizeof(double),num,fid);for(int i = 0; i < num; i++)printf("%lf\n", pos[i]);free(pos); //释放内存}fclose(fid);}四:C++⽂本⽂件读写1. ⽂本⽂件写⼊//采⽤CPP模式写txtvoid TxtWrite_CPPmode(){//准备数据int index[50] ;double x_pos[50], y_pos[50];for(int i = 0; i < 50; i ++ ){index[i] = i;x_pos[i] = rand()%1000 * 0.01 ;y_pos[i] = rand()%2000 * 0.01;}//写出txtfstream f("txt_out.txt", ios::out);if(f.bad()){cout << "打开⽂件出错" << endl;return;}for(int i = 0; i < 50; i++)f << setw(5) << index[i] << "\t" << setw(10) << x_pos[i] <<"\t" <<setw(10)<< y_pos[i] << endl;f.close();}2.⽂本⽂件读取//采⽤CPP模式读取txtvoid TextRead_CPPmode(){fstream f;f.open("txt_out.txt",ios::in);//⽂件打开⽅式选项:// ios::in = 0x01, //供读,⽂件不存在则创建(ifstream默认的打开⽅式)// ios::out = 0x02, //供写,⽂件不存在则创建,若⽂件已存在则清空原内容(ofstream默认的打开⽅式)// ios::ate = 0x04, //⽂件打开时,指针在⽂件最后。
数位分解
请勿改动主函数main()、读取数据函数readDat()和输出数据函数writeDat()的内容。
voidCalValue(void)
{
inti;
for(i=0;i<N;i++)/*遍历数组xx中的所有元素*/
{
sumint+=(int)xx[i];/*累加xx[i]的整数部分*/
a3=i%10;/*分离出元素i的个位*/
if(a1==(a2+a3)%10)/*若个位数字与十位数字之和被10除所得余数是百位数字*/
{
half=i/2;
for(j=2;j<half;j++)/*判断元素i是否是素数*/
if(i%j==0)break;
if(j>=half)
{sum+=i;cnt++;}
if(a[i]%2==0)/*若该数是偶数*/
{
a1=a[i]/1000;/*分离出元素a[i]的千位*/
a2=a[i]%1000/100;/*分离出元素a[i]的百位*/
a3=a[i]%100/10;/*分离出元素a[i]的十位*/
a4=a[i]%10;/*分离出元素a[i]的个位*/
if((a1<=a2)&&(a2<=a3)&&(a3<=a4))
}
}
《上机题库12》请根据以下各小题的要求设计VC应用程序(包括界面和代码)。
已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中。请编制函数jsValue(),其功能是:求出千位数上的数减百位数上的数减十位数上的数减个位数上的数小于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位平均数平均值pjz2,最后调用写函数writeDat()把结果输出到out.dat文件。
VC中ini文件操作
VC中ini文件操作VC中读取 ini文件VC中读写ini文件的方法ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息。
ini文件由若干个节(Section)组成,每个Section由若干键(Key)组成,每个Key可以赋相应的值。
读写ini文件实际上就是读写某个的Section中相应的Key的值,而这只要借助几个函数即可完成。
一、向ini文件中写入信息的函数1. 把信息写入系统的win.ini文件BOOL WriteProfileString(LPCTSTR lpAppName, // 节的名字,是一个以0结束的字符串LPCTSTR lpKeyName, // 键的名字,是一个以0结束的字符串。
若为NULL,则删除整个节LPCTSTR lpString // 键的值,是一个以0结束的字符串。
若为NULL,则删除对应的键)2. 把信息写入自己定义的.ini文件BOOL WritePrivateProfileString(LPCTSTR lpAppName, // 同上LPCTSTR lpKeyName, // 同上LPCTSTR lpString, // 同上LPCTSTR lpFileName // 要写入的文件的文件名。
若该ini文件与程序在同一个目录下,也可使用相对路径,否则需要给出绝度路径。
)如:::WriteProfileString("Test","id","xym");//在win.ini中创建一个Test节,并在该节中创建一个键id,其值为xym::WritePrivateProfileString("T est","id","xym","d:\\vc\\Ex1\\ex1 .ini");//在Ex1目录下的ex1.ini中创建一个Test节,并在该节中创建一个键id,其值为xym//若Ex1.ini文件与读写该文件的程序在同一个目录下,则上面语句也可写为:::WritePrivateProfileString("T est","id","xym",".\\ex1.ini");需要注意的是,C系列的语言中,转义字符'\\'表示反斜线'\'。
2023年湖北省宜昌市全国计算机等级考试网络技术模拟考试(含答案)
2023年湖北省宜昌市全国计算机等级考试网络技术模拟考试(含答案) 学校:________ 班级:________ 姓名:________ 考号:________一、单选题(10题)1.计算机种类繁多,按照“现实的分类”,可以将计算机分为( )。
A.台式机、便携机、掌上机3种类型B.巨型机、大型机、中型机、小型机和微型机5种类型C.服务器、工作站、台式机、便携机、手持设备5种类型D.大型主机、小型计算机、个人计算机、工作站、巨型计算机和小巨型机6种类型2.定义一个用于封禁ICMP协议而只允许转发166.129.130.0/24子网的ICMP数据包的访问控制列表,Cisco路由器的正确配置是()。
A.aeeess一list 198 permit icmp 166.129.130.0 255.255.255.0 any access—list 198 deny iemp any any access—list 198 permit ip any anyB.access—list 198 permit icmp 166.129.130.0 0.0.0.255 any access—list 198 deny icmp any any access—list 198 permit ip any anyC.access—list 99 permit icmp 166.129.130.0 0.0.0.255 any access—list 99 deny icmp any any access一list 99 permit ip any anyD. access—list 100 permit icmp 166.129.130.0 0.0.0.255 any access—list 100 permit ip any any access—list 100 deny icmp any any3.下列描述属于网络管理目标的是()Ⅰ减少停机时间、改进响应时间,提高设备利用率;Ⅰ减少运行费用,提高设备效率;Ⅰ减少或消除瓶颈;Ⅰ适应新技术;Ⅰ使网络更容易使用。
C++,java读写二进制文件方法介绍
今天终于弄明白怎样使用C++读写二进制文件了。
要读取文件必须包含<fstream>头文件,这里包含了C++读写文件的方法。
可以使用fstream类,这个类可以对文件进行读写操作。
1、打开文件。
打开文件可以有两种方式,第一种可以使用fstream类的构造函数。
fstream file("test.dat",ios_base::in|ios_base::out|ios_base::app); 另外一种方法就是使用open函数。
fstream file;file.open("test.dat",ios_base::in|ios_base::out|ios_base::app);这样就可以打开一个可读写的文件了。
如果文件不存在的话,就会创建一个新文件并且以读写方式打开。
这里需要说明一点,如果文件不存在的话,open函数中第二个参数必须包含ios_base::out|ios_base::app,否则就不能正确创建文件。
2、写文件。
先进性写文件的操作否则读一个空文件是没有意义的。
既然是写二进制文件可以向文件中写入一个整形值。
写二进制字符只能使用write函数。
但是write函数的原形是write(const char * ch, int size)。
第一个参数是char *类型,所以需要把将要写入文件的int类型转换成char *类型。
这里的转换困扰了我好几天,不过终于弄明白了。
代码如下。
int temp;file.write((char *)(&temp),sizeof(temp));3、读文件。
可以写文件了,读文件就好办多了。
读文件需要用到read函数。
其参数和write大致相同,read(const char * ch, int size)。
要把内容读到int类型变量中同样涉及到一个类型转换的问题。
和写文件一样。
int readInt;file.read((char *)(&readInt),sizeof(readInt));这样文件中的int值就读入到int型变量readInt中了。
VC操作INI
用VC操作ini配置文件2009年02月13日星期五 10:27Windows操作系统专门为此提供了6个API函数来对配置设置文件进行读、写:GetPrivateProfileInt() 从私有初始化文件获取整型数值GetPrivateProfileString() 从私有初始化文件获取字符串型值GetProfileInt 从win.ini 获取整数值GetProfileString 从win.ini 获取字符串值WritePrivateProfileString 写字符串到私有初始化文件WriteProfileString 写字符串到win.ini我们可以把视图类的:OnInitialUpdate() 函数作为程序启动时读取配置文件的入口,配置文件的存储格式如下:[SECTION 1]XPos=300YPos=200[SECTION 2]Text=Hello仅有两个节,XPos和YPos标明了待显示信息的坐标,而待显示的信息存储在第二节的Text项中,用读取访问私有配置设置文件的API函数将其分别读入到变量m_nXPos,m_nYPos和m_strText中,并通过Invalidate()调用OnDraw()函数,在其内用TextOut函数将该信息在读取的坐标位置显示出来:m_nXPos=GetPrivateProfileInt("SECTION 1", //节名"XPos", //项名0, //没找到此项时的缺省返回值"C:\test\debug\test.ini"); //配置文件的准确路径m_nYPos=GetPrivateProfileInt("SECTION 1","YPos",0,exeFullPath);char buf[256];len=GetPrivateProfileString("SECTION 2", //节名"Text", //项名"No Text", //没找到此项时的返回值buf, //目标缓冲区地址256, //目标缓冲区长度"C:\test\debug\test.ini"); //配置文件的准确路径for(int i=0;i<len;i++){CString str;str.Format("%c",buf[i]);m_strText+=str;}Invalidate();一般配置文件是和应用程序存放在同一个目录中的如果用"C:\test\debug\test.ini"的绝对路径进行设置就会出现路径改变后找不到配置文件的问题,所以应动态搜寻配置文件的存放地址:Tchar exeFullPath[MAX_PATH]; // MAX_PATH在API中有定义,为128int len=GetModuleFileName(NULL,exeFullPath, //应用程序的全路径存放地址MAX_PATH);CString path="\test.ini"; //配置文件名::strcpy(exeFullPath+len-13,path); //组合出配置文件的全路径写配置文件也基本类似,只是需要把数值类型的变量格式化成字符串再行存储:str.Format("%d",m_nXPos);WritePrivateProfileString("SECTION 1","XPos",str,exeFullPath);str.Format("%d",m_nYPos);WritePrivateProfileString("SECTION 1","YPos",str,exeFullPath); WritePrivateProfileString("SECTION 2","Text",m_strText,exeFullPath);我们一定遇到过这样的程序:在执行过一遍以后,重启系统会自动加载该程序,其实除了在启动菜单和注册表添加信息外,也可以用 WriteProfileString()函数向win.ini的"windows"节的"run"项目添加应用程序的全路径来实现,这要比其它两种方法简便的多,而且也比较安全。
C++基础系列——文件操作
C++基础系列——⽂件操作⼀、C++⽂件类及⽤法C++ 标准库提供了 3 个类⽤于实现⽂件操作,它们统称为⽂件流类,这 3 个类分别为:ifstream:专⽤于从⽂件读取数据ofstream:专⽤于向⽂件写⼊数据fstream:可读可写这三个⽂件流类都位于 fstream 头⽂件中fstream 类拥有 istream、ostream 类的全部成员⽅法。
fstream 头⽂件中并没有定义可直接使⽤的 fstream、ifstream 和 ofstream 类对象fstream 类常⽤成员⽅法成员⽅法名适⽤类对象功能open()fstream打开指定⽂件,使其与⽂件流对象关联is_open()ifstream检查指定⽂件是否已打开。
close()ofstream关闭⽂件,切断和⽂件流对象的关联。
swap()ofstream交换 2 个⽂件流对象。
operator>>(i)fstream重载 >> 运算符,⽤于从指定⽂件中读取数据。
gcount()(i)fstream返回上次从⽂件流提取出的字符个数。
该函数常和 get()、getline()、ignore()、 peek()、read()、readsome()、putback() 和 unget() 联⽤。
get()(i)fstream从⽂件流中读取⼀个字符,同时该字符会从输⼊流中消失。
getline(str,n,ch)(i)fstream从⽂件流中接收 n-1 个字符给 str 变量,当遇到指定 ch 字符时会停⽌读取,默认情况下 ch 为 '\0'。
ignore(n,ch)(i)fstream从⽂件流中逐个提取字符,但提取出的字符被忽略,不被使⽤,直⾄提取出 n 个字符,或者当前读取的字符为 ch。
peek()(i)fstream返回⽂件流中的第⼀个字符,但并不是提取该字符。
putback(c)(i)fstream将字符 c 置⼊⽂件流(缓冲区)。
关于C#如何读取16进制dat文件的方法
关于C#如何读取16进制dat文件的方法
我已经想不到除了在这里发帖还能去那里发帖了...
首先要说明的是...
小弟并不是做修改器的...
小弟供职于上海某软件公司.基本说起来算是实习(先说明...俺是自考生...尚未毕业...别嘲笑小弟技术差啊...)...前几天经理交给小弟一个任务.要小弟写一个程序.可以修改公司软件的参数表的信息.做出来的东西可以直接可视化修改数值而不需要用Ultraedit打开手动以16进制状态修改..
但参数表都是16进制的以dat结尾加密文件.普通读取根本无法读出来...有说用2进制的读取方法...我也没读出来...
后来小弟忽然想到...存档修改器也是修改save文件.事实上和我这个是一个道理...这里的大大们一定都知道读取的方法...
还有就是当我把界面画好后.如何截取第9和第10个字节放到一个textbox中去就像我们用修改器的时候修改人物生命一样.那一定也是一个字节数.
小弟用的是C#.我想这里用C#写修改器的估计是根本没有...不过小弟只想知道读取的方法...毕竟语言都是差不多的...尤其是C.JAVA和C#都很相似...
谢谢各位了... 告诉小弟吧...。