阶梯轴的有限元分析及其优化 - 图文(7)

2025-04-29

一个布尔型参数,它决定了数据传送的方向。当参数为TRUE时,将数据从对话框的控件传送到对应的数据成员中,当参数为FALSE时则将数据从数据成员中传给对应的控件。

4.1.2 VISUAL C++中文本文件的读写

在开发软件的过程中,程序员经常同文件系统打交道,读写各种文件。在VISUAL C++6.0环境下,程序员可以使用ANSI C/C++提供的标准文件操作方式,也可以使用Win32 API进行文件操作,更为简单的方法是利用MFC已经封装好的CFile系列的文件操作类来进行文件的读写操作[29]。

本文主要使用ANSI C/C++提供的标准文件操作方式,采用这种方式进行开发的优点是通用性,因此必然会无法利用特定操作系统的某些特性,例如Windows操作系统下的异步操作特性。

ANSI C/C++提供的标准文件操作函数有fopen、fclose、fgetc、fputc、fread、fwrite、feof、ferror等,本文用到的函数主要是[30]

1、fopen函数原型

FILE*fopen(const char*filename,const char*mode);

该函数的功能是打开一个文件,如果成功调用,返回一个文件指针;否则,返回NULL。 ● filename 参数 要打开的文件名称 ● mode 参数

文件打开的模式。可以使用的数值有r、w、a、r+、w+、a+,分别表示读文件、写文件、在文件尾部写、读写文件、打开空文件进行读写、在文件尾部读写。 2、fcolse函数原型

int fclose(FILE*stream);

该函数的功能是关闭一个文件,返回0表示成功,否则失败。 ● stream 参数

由fopen打开的文件指针。

ANSI C还提供了一个比较有用的关闭文件函数——_fcloseall,这个函数可以关闭所有打开的文件,但是不包括几个标准的输入、输出设备,即stdin、stdout、stderr。 下面一段代码演示了fopen、fclose、_closeall函数的用法。 /*FOPEN.C:这段程序打开了data,data2两个文件,

利用fclose关闭了data,利用_fcloseall关闭了其他的文件*/

#include FILE*stream,*stream2; Void main(void) {

int numclosed; //打开文件,进行读

if((stream =fopen(“data”,“r”))==NULL) printf(“The file ‘data’was not opened\\n”); else

printf(“The file ‘data’was opened\\n”); //打开文件,进行写

if((stream2 =fopen(“data2”,“w+”))==NULL)

printf(“The file ‘data2’was not opened\\n”); else

printf(“The file ‘data2’was opened\\n”); //关闭文件

if(fclose(stream))

printf(“The file ‘data’was not opened\\n”); //关闭其他的文件

Numclosed =_fcloseall();

printf(“Number of files closed by _fcloseall:%u\\n”,numclosed); }

这段程序的输出结果为: The file ‘data’was opened The file ‘data2’was opened

Number of files closed by _fcloseall:1 3、fread函数原型

size_t fread(void*buffer,size_t size,size_t count,FILE*stream); ●buffer 参数

接受读入数据的缓冲区。 ●size 参数

打算读取的数据长度。 4、fwrite函数原型

size_t fwrite(const void*buffer,size_t size,size_t count, FILE*stream); 参数同fread。

下面这段代码演示了fread、fwrite的使用方法。 /*FREAD.C:

这段程序首先写入25个字符,然后读入25个字符 并且显示出读取字符的个数 */

#include void main(void) {

FILE*stream; char list[30];

int i,numread,numwritten; //打开文件

if((stream = fopen(“fread.out”,”w+t”))!=NULL) {

for(i=0;i<25;i++)

list[i]=(char)(‘z’-i); //写入字符

Numwritten=fwrite(list,sizeof(char),25,stream); printf(“Wrote %d items\\n”,numwritten);

fclose(stream);

} else

printf(“Problem opening the file\\n”);

if((stream =fopen(“fread.out”,”r+t”))!=NULL)

{ //读取字符

printf(“Number of items read = %d\\n”,numread); printf(“Contents of buffer = %.25s\\n”,list); fclose(stream); } else

printf(“File could not be opened\\n”); }

5、fprintf 函数原型

int fprintf( FILE *stream, const char *format [, argument ]...); 是用于文件操作的,printf就是在屏幕打印出一段字符串,是标准输出。

举例用法:

#include #include FILE *stream; void main( void ) {

int i = 10; double fp = 1.5;

char s[] = \char c = '\\n';

stream = fopen( \fprintf( stream, \fprintf( stream, \fprintf( stream, \fclose( stream );

system( \}

屏幕输出: this is a string 10 1.500000

4.1.3 VISUAL C++中APDL命令流文件读写的实现

在4.1.1和4.1.2中分别介绍了对话框编程中数据的提取和使用ANSI C/C++提供的标准文件进行操作,在本节中就将介绍利用这些方法来实现将APDL编写的命令流在VISUAL C++中写到文本文件中去。首先将APDL写的命令流生成一个LeaderAxis.txt文件,然后采用ANSI C/C++的fwrite函数将输入的参数写到创建的文本文件中,下面就以在VISUAL C++中,将阶梯轴有限元建模和网格划分的APDL命令流文件写入到指定的文本文件中为例,说明具体的实现过程,其用VISUAL C++编写的部分主要实现代码如下:

4.2 VISUAL C++调用ANSYS以批处理方式运行的实现

本文在VISUAL C++平台上对ANSYS进行封装,希望可以在前台处理系统和用户之间的交换,后台完成ANSYS的计算,这可以通过创建进程的方式来实现。

4.2.1 进程和线程

进程是正在执行的程序,程序是静态的代码和数据。同一个程序,可由多个进程执行。在操作系统内部,进程是位于核心区的一块内存结构,其中包含了虚拟地址空间、可执行代码、数据、对象句柄、环境变量、基本优先级、最小和最大工作集等有关信息。

线程是程序中的一个执行路径,它在进程上下文中执行。进程中的每个线程都独立运行。它们共享进程提供的各种资源:如代码、数据、虚拟地址空间等。每个线程可以执行进程中的不同代码,进程中的同一段代码也可以由多个线程执行。

操作系统创建了进程后,会创建一个线程执行进程中的代码。通常把这个线程成为该进程的主线程。主线程在执行过程中,可能会创建其它线程

[31]

在VISUAL C++中可以通过API函数CreateProcess创建进程去执行其它的程序,而且可以设置该进程的优先级。CreateProcess的函数原型是这样的:

BOOL CreateProcess(

LPCTSTR lpApplicationName,//应用程序名 LPTSTR lpCommandLine,//命令行

LPSECURITY_ATTRIBUTES lpProcessAttributes,//进程安全属性


阶梯轴的有限元分析及其优化 - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:路基特殊处理施工方案及技术措施

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219