mfc 深入浅出

基础(1)

來計算小於 100 的所有費伯納契數列(Fabonacci sequence)。費伯納契數列的計算方式是:1. 頭兩個數為 1。2. 接㆘來的每㆒個數是前兩個數的和。

#include<afx.h>
#include <stdio.h>

int main()
{
	int lo, hi;
	CString str;
	CStdioFile fFibo;
       
	fFibo.Open(_T("C:\\Users\\utadahikaru\\Documents\\FIBO.DAT"), CFile::modeWrite | CFile::modeCreate | CFile::typeText);
	str.Format(_T("%s\n"),_T("Fibonacci sequencee,less than 100"));
	printf("%S", (LPCTSTR)str);
	fFibo.WriteString(str);

	lo = hi = 1;

	str.Format(_T("%d\n"), lo);
	printf("%s",(LPCTSTR)str);
	fFibo.WriteString(str);

	while (hi < 100)
	{
		str.Format(_T("%d\n"), hi);
		printf("%S", (LPCTSTR)str);
		fFibo.WriteString(str);
		hi = lo + hi;
		lo = hi - lo;


	}
	fFibo.Close();
	return 0;

	 

}

程序简单易懂,注意点:

printf("%S", (LPCTSTR)str);
我这里因为宽字符,所以将书上原有%s修正为%S,不然会导致输出的只有首字母。

CStdioFile 
描述: CStdioFile继承自CFile,一个CStdioFile 对象代表一个用运行时函数fopen 打开的C 运行时流式文件。

CFile::modeWrite | CFile::modeCreate | CFile::typeText
CFile参数简介:

CFile::modeCreate 创建一个新的文件,如果文件存在将文件截取成长度为0。 ·

CFile::modeNoTruncate 此标志总是与modeCreate 配合使用,如果文件存在,不将文件截取成长度为0;如果文件不存在即创建新文件。这个功能往往很好用,比如说,当你需要打开一个设置文件,但是你并不清楚这个文件是否已经存在。

CFile::modeRead 只读方式打开。

· CFile::modeReadWrite 读写方式打开。. ·

CFile::modeWrite 只写方式打开。 ·

CFile::modeNoInherit 阻止这个文件被子进程继承。 ·

CFile::shareDenyNone 打开这个文件同时允许其它进程读写这个文件。如果文件被其它进程以兼容的模式打开,这时create操作会失败。 ·

CFile::shareDenyRead 打开文件拒绝其它任何进程读这个文件。如果文件被其它进程用compatibility模式或者是读方式打开,create操作失败。. ·

CFile::shareDenyWrite 打开文件拒绝其它任何进程写这个文件。如果文件被其它进程用compatibility模式或者是写方式打开,create操作失败。 ·

CFile::shareExclusive 以独占方式打开这个文件,不允许其它 进程读写这个文件。如果文件已经在其它程序或当前程序以其他方式打开来进行读写,将返回失败。 ·

CFile::shareCompat 这个标志在32位的MFC中无效。 ·

CFile::typeText 设置成对回车换行对有特殊处理的文本模式(仅用在派生类中)。 ·

CFile::typeBinary 设置二进制模式(仅用在派生类中) 。

(只写|创建|回车的特殊处理);

printf("%S", (LPCTSTR)str);//cstring类型printf输出需要LPCTSTR强制转换。




猜你喜欢

转载自blog.csdn.net/iloveyou418/article/details/78991375