㈠ 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(「文件被佔用,請關閉後內再發送容」);
}