欢迎来到天天文库
浏览记录
ID:30801675
大小:76.50 KB
页数:7页
时间:2019-01-03
《在多线程编程时遇到的问题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、同学们在多线程编程时遇到的问题整理(1)如何根据文本文件大小,#include最后更新时间:2011-12-7动态创建一个字符数组存放文本文件?#includeusingnamespacestd;char*textBuf;〃定义一*个char*型指针intmain(intargc,char*argv[]){ifstreaminFile;intnFileLen;inFile.openCtext.txt");〃打开一个文件if(!inFile){cout«"Fileopenerror."«endl;}inFile.seekg(0,ios::end);〃把
2、文件读写指针移到文件末尾nFileLen=inFile.tellgO;//获取文件长度inFile,seekg(0,ios::beg);〃把文件读写指针移到文件的起始位置textBuf=newchar[nFileLen+lJ;//根据文件长度,动态申请一块内存,多加一个字节,存放WinFile»textBuf;〃把文件内容读入该内存屮cout«texlBuf«endl;return0;这段代码看似正确,但是,如果文件中有空格和换行,则发现读出的内容仅是文件的一部分,即从文件第一个字节到文件中第一个空格或换行符出现位置。这是因为“inFile»textBuf;”的特点,它能够读取连续的字符
3、,直至遇到空格或换行符为止。但是文件屮都有空格或换行,怎么才能一次读入所有内容呢?用ainFile.read(textBuf,nFileLen);”代替“inFile»textBuf;”。read()方法不区分任何字符的读入内容,最多可读入变量nFileLen指定的字符数,而且不会在读入字符的末尾自动加,(F,如果你需要把读入内容变成真正的字符串,需要自己编程在末尾加,W,否则,你不能用”coutvvtextBuP输出读入的内容。#includeusingnamespacestd;char*textBuf;//定义个char★型指针
4、intmain(intargc,char*argv[]){ifstreaminFile;intnFileLen;inFile.open("text.txt");//打开一个文件if(!inFile){cout5、ile.read(textBufznFileLen);//把文《I:内容读入该内存中textBuf[nFileLen]=* ';cout6、cess.hn#include#includeHANDLEhmutex;unsignedint_stdcallThread1(void*p){inti,j;for(i=0;i<5;i++){WaitForSingleObject(hmutexJNFINITE);for(j=0;j<5;j++){cout«nInthreadl.H«endl;ReleaseMutex(hmiitex);return0;unsignedint_stdcallThread2(void*p){inti,j;for(i=0;i<5;i++){WaitForSingleObj7、ect(hmutex,INFINITE);for(j=0;j<5;j++){cout«nInthread2.n«endl;}ReleaseMutex(hmutex);}return0;}voidmain(intargc,char*argv[]){HANDLEhThread[2];unsignedthreadID[2];hmutex=CreateMutex(NULL,FALSE,NULL);cout«nCreatingthreadl"
5、ile.read(textBufznFileLen);//把文《I:内容读入该内存中textBuf[nFileLen]=* ';cout6、cess.hn#include#includeHANDLEhmutex;unsignedint_stdcallThread1(void*p){inti,j;for(i=0;i<5;i++){WaitForSingleObject(hmutexJNFINITE);for(j=0;j<5;j++){cout«nInthreadl.H«endl;ReleaseMutex(hmiitex);return0;unsignedint_stdcallThread2(void*p){inti,j;for(i=0;i<5;i++){WaitForSingleObj7、ect(hmutex,INFINITE);for(j=0;j<5;j++){cout«nInthread2.n«endl;}ReleaseMutex(hmutex);}return0;}voidmain(intargc,char*argv[]){HANDLEhThread[2];unsignedthreadID[2];hmutex=CreateMutex(NULL,FALSE,NULL);cout«nCreatingthreadl"
6、cess.hn#include#includeHANDLEhmutex;unsignedint_stdcallThread1(void*p){inti,j;for(i=0;i<5;i++){WaitForSingleObject(hmutexJNFINITE);for(j=0;j<5;j++){cout«nInthreadl.H«endl;ReleaseMutex(hmiitex);return0;unsignedint_stdcallThread2(void*p){inti,j;for(i=0;i<5;i++){WaitForSingleObj
7、ect(hmutex,INFINITE);for(j=0;j<5;j++){cout«nInthread2.n«endl;}ReleaseMutex(hmutex);}return0;}voidmain(intargc,char*argv[]){HANDLEhThread[2];unsignedthreadID[2];hmutex=CreateMutex(NULL,FALSE,NULL);cout«nCreatingthreadl"
此文档下载收益归作者所有