㈠ MFC中读取TXT文件中的数据和行列数
既然有1位数的数据也有4位数的数据,那么如果txt中没有特意的回车,行数和列数不可能确定。如果有回车的话,简单,用
#include <string.h>
char *strtok( char *str1, const char *str2 );
就能解决。
先用getline()一行读出一个str,并累加行数,然后
char *result = NULL;
char string[100][100];
int x = 0;
result = strtok( str, " ");
while( result != NULL ) {
strcpy(string[x++] , result);
result = strtok( NULL, " " );
}
这样用一个string数组就可以把全部数据保存下来。x记录了总数,然后x除以行数就是列数。
今天有空了,帮你把程序全写出来:
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
void main(){
char ch[100] = "\\0";
char b[100][100];
int x=0,y=0;
ifstream fin("123.txt",ios::in);
fin.getline(ch,100);
while(!fin.eof()){
++x;
cout<<ch<<endl;
char *result = NULL;
result = strtok(ch,",");
while( result != NULL ) {
strcpy(b[y++],result);
cout<<b[y-1]<<endl;
result = strtok( NULL, "," );
}
memset(ch,0,100);
fin.getline(ch,100);
}
fin.close();
}
//已运行过了,没问题,b[100][100]是所有元素,x为行数,y/x为列数。
㈡ mfc 判断某个文件是否存在 不存在则创建
用CFile操作文件,可以一个语句直接实现你的逻辑:
CFilef;
f.Open(_T("1.txt"),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite);
CFile::modeNoTruncate和modeCreate一起使用:
如果文件专不存在,创属建一个新文件; 否则如果该文件已经存在,则直接打开
㈢ MFC中我要做文件传输,知道文件路径,要判断文件是否被打开,如果打开提示“文件被占用,请关闭后再发送”
|CStdioFile logFile;
path=文件路径
bool openLogFiles=logFile.Open(_T(path), CFile::modeWrite|CFile::typeText,NULL);
if(!openLogFiles)
{
MessageBox(“文件被占用,请关闭后内再发送容”);
}