使用fopen函数打开文本文件,在使用fscanf函数的%d参数分别读入数字即可。
1fopen的函数原型:FILE fopen(const char path,const char mode);
fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读数据。
rw+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。
2例程:
#include<stdioh>#define F_PATH "d:\\myfile\\filedat"
int i=0,s[1000];
int main(){
FILEfp=NULL;//需要注意
fp=fopen(F_PATH,"r");
if(NULL==fp) return -1;//要返回错误代码
while(fscanf(fp,"%d",s+i)!=EOF) printf("%d ",s[i++]); //从文本中读入数字并在控制台打印出来
fclose(fp);
fp=NULL;//需要指向空,否则会指向原打开文件地址
return 0;
}
使用fopen函数打开文本文件,在使用fscanf函数的%d参数分别读入数字即可。
1fopen的函数原型: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
字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回null,并把错误代码存在errno中。
2例程:
#include
#define f_path "d:\\myfile\\filedat"
int i=0,s[1000];
int main(){
filefp=null;//需要注意
fp=fopen(f_path,"r");
if(null==fp) return -1;//要返回错误代码
while(fscanf(fp,"%d",s+i)!=eof) printf("%d ",s[i++]); //从文本中读入数字并在控制台打印出来
fclose(fp);
fp=null;//需要指向空,否则会指向原打开文件地址
return 0;
}
CStdioFile file;
CString ReadFileString;
if (!fileOpen(_T("capitaltxt"),CFile::modeRead)){return;}
while (fileReadString(ReadFileString)){
DWORD m_start = 0;
int m_offset = 0;
TCHAR m_charFind = '\t'; //查找\t分割符
int m_charNum = 0;
while (m_start <= ReadFileStringGetLength())
{
m_offset = ReadFileStringFind(m_charFind,m_start); //搜索偏移量
if (-1 != m_offset)
{
m_charNum = m_offset - m_start;
;//存储到不同对象
m_start = m_offset + 1;
}
else
{
m_charNum = strRowDataGetLength() - m_start;
;//存储最后一段值
break;
}
}
}
fileclose();
里面的存储代码很简单,就是判断长度,截取代码。
我写了一个。
界面一个文本框两个按钮,文本框关联一个CString型变量m_Data,设置属性为Vertical scroll和Want return。
两个按钮对应的读写函数分别如下
void CFileTxtDlg::OnRead()
{
// TODO: Add your control notification handler code here
CFileDialog fDlg(TRUE);
fDlgm_ofnlpstrFilter = "Text Files(txt)\0txt\0\0";
if(fDlgDoModal() == IDOK)
{
CStdioFile stdFile;
stdFileOpen(fDlgGetPathName(), CFile::modeRead | CFile::typeBinary);
DWORD fileLen = stdFileGetLength();
char pBuf = new char[fileLen + 1];
pBuf[fileLen] = 0;
stdFileRead(pBuf, fileLen);
UpdateData();
m_Data = pBuf;
UpdateData(FALSE);
delete pBuf;
stdFileClose();
}
}
void CFileTxtDlg::OnWrite()
{
// TODO: Add your control notification handler code here
UpdateData();
CFileDialog fDlg(FALSE);
fDlgm_ofnlpstrFilter = "Text Files(txt)\0txt\0\0";
fDlgm_ofnlpstrDefExt = "txt";
if(IDOK == fDlgDoModal())
{
CStdioFile stdFile;
stdFileOpen(fDlgGetPathName(), CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);
stdFileWriteString(m_Data);
stdFileClose();
}
}
如要源代码发消息
保存到excel中比较麻烦,excel还得有驱动(我在网上下载了个封装好的excelh
excelcpp
直接用的,搜了几句代码,功能实现了,不过我没看懂什么意思)。
我一般直接保存到txt中,这个最简单了。
我把数据放到cstring
变量中,然后写入txt的。
1
我把写入txt的函数封装到了
工程cpp
中了。假设为void
addtotxt(cstring
var)
2
在读取此函数的对话框中,extern
c工程名app
theapp;
3
放入数据到txt中
theappaddtotxt(strtemp);
4工程cpp
中的函数体。
cstring
crenamefileapp::getexepath(void)
{
char
szfilepath[max_path
+
1]={0};
getmodulefilenamea(null,
szfilepath,
max_path);//1111
(strrchr(szfilepath,
'\\')+1)[0]
=
0;
//
删除文件名,只获得路径字串
cstring
path
=
szfilepath;
return
path;
}
void
crenamefileapp::addtotxt(cstring
strtemp)
{
cstring
h_path;
h_path=getexepath();
h_path=
h_path+"文件名核对txt";
cfile
file;
if(!fileopen(_t(h_path),cfile::modereadwrite|
cfile::typebinary))
{
fileopen(_t(h_path),cfile::modecreate|cfile::modereadwrite|
cfile::typebinary);
}
fileseektoend();
filewrite(strtemp,strtempgetlength());
fileclose();
}
MFC主要读写文件的类是CFile,而CStdioFile类是派生自CFile类的,主要增加了一个按行的方式读取/写入文件每行字符串的功能
读写TXT文件,写入和输出必须统一格式
CStdioFile myFile, File;
if(myFileOpen(CBApp::getCurrModulePath()+_T("filenametxt"), CFile::modeRead))
{
//读取
myFileReadString(str);
myFileClose();
}
else
{
//创建
FileOpen(CBApp::getCurrModulePath()+_T("filenametxt"), CFile::modeWrite | CFile::modeCreate);
FileWriteString(sFileName);
FileClose();
}
//写入
FileOpen(CBApp::getCurrModulePath()+_T("filenametxt"), CFile::modeWrite );
FileWriteString(sFileName);
FileClose();
FILE fHexFile;
fHexFile = fopen(cstrFilePath, "rb");
DWORD result = fread (&b,sizeof(byte ),1,fHexFile);
以上就是关于VC/MFC 中 如何读取txt文件中的数字,并存放在二维数组里全部的内容,包括:VC/MFC 中 如何读取txt文件中的数字,并存放在二维数组里、mfc读取文件内容并保存到二维数组中、mfc程序读取txt文件后如何 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)