user-0 提问: 如把把下面代码改纯C语言，译出EXE到纯DOS系统运行？？

回复:
user: user-1
content: 使用通用易跨平台的函数编写。  最好是c语言标准的函数和类型。

user: user-2
content: 自己写个CString类， 用 C流 FILE*， fopen,fread,fwrite,fscanf,fprintf,fclose 　  ,或者代号IO函数 _creat,creat,open,_open,read,write,_read,_write,close,_colse　，　， 或者FCB IO函数（不记得有没有了）， 也可以用Dos int21 文件操作 替换API HANDLE 文件操作 CreateFile,ReadFile,WriteFile,CLoseHandle

user: user-0
content: 上面两位老大，能改一份C代码学一下不？谢谢：）

user: user-3
content: 就读写文件嘛，用标准的C函数fopen什么的就可以完成的操作。

user: user-4
content: 不行的，DOS下没有CreateFile等API，你必须按照DOS的规则来编写你的程序，而且需要用Turbo C进行编译。  引用 楼主 BDYCAD 的回复:// ErasePUPD.cpp : 定义控制台应用程序的入口点。 #include "stdafx.h" //#include "windef.h" //#include "afx.h" #include "atlstr.h" #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <io.h> #include <iostream> //#include "winbase.h" //#include < sys\stat.h>  //#include < afx.h>  CString BC_ReadFile(char* FilePath){ 	CString OutString=""; 	HANDLE pfile;  	pfile = ::CreateFile(FilePath,GENERIC_READ,0,NULL,OPEN_EXISTING/*文件必须已经存在。由设备提出要求*/ 		,FILE_ATTRIBUTE_NORMAL/*默认属性*//*|FILE_FLAG_DELETE_ON_CLOSE关闭了上一次打开的句柄后，将文件删除。特别适合临时文件*/,NULL);//用这个函数比OpenFile好 	if ( pfile == INVALID_HANDLE_VALUE)    	{          		//MessageBox( NULL,"打开文件失败" ,"Error",MB_OK);    		CloseHandle(pfile); // 一定注意在函数退出之前对句柄进行释放。 		return OutString;  	}  	DWORD filesize=GetFileSize(pfile,NULL); 	char* buffer=new char[filesize+1]; // 最后一位为 '/0',C-Style 字符串的结束符。  	DWORD readsize; 	ReadFile(pfile,buffer,filesize,&readsize,NULL); 	buffer[filesize]='\0'; 	OutString=buffer; 	//MessageBox(NULL,buffer,"Buffer Size",MB_OK); // 善后工作  	delete[] buffer; // 注意是delete[] 而不是 delete  	CloseHandle(pfile); // 关闭句柄。 	return OutString; } bool BC_WriteFile(char* FilePath,CString InWriteStr) { 	DeleteFile(FilePath);//如果要写进的文件存在，先进行删除 	CString OutString=""; 	HANDLE pfile;  	pfile = ::CreateFile(FilePath,GENERIC_WRITE,0,NULL,CREATE_NEW /*创建文件；如文件存在则会出错*/ 		,FILE_ATTRIBUTE_NORMAL/*默认属性*//*|FILE_FLAG_DELETE_ON_CLOSE关闭了上一次打开的句柄后，将文件删除。特别适合临时文件*/,NULL);//用这个函数比OpenFile好 	if ( pfile == INVALID_HANDLE_VALUE)    	{          		//MessageBox( NULL,"打开文件失败" ,"Error",MB_OK);    		CloseHandle(pfile); // 一定注意在函数退出之前对句柄进行释放。 		return FALSE;  	} 	DWORD filesize=InWriteStr.GetLength();//GetFileSize(pfile,NULL); 	char* buffer=new char[filesize+1]; // 最后一位为 '/0',C-Style 字符串的结束符。  	for (int i=0;InWriteStr.GetLength()>i;i++) 	{ 		buffer[i]=InWriteStr.GetAt(i); 	} 	buffer[filesize]='\0'; 	DWORD readsize; 	WriteFile(pfile,buffer,filesize,&readsize,NULL); 	delete[] buffer; // 注意是delete[] 而不是 delete  	CloseHandle(pfile); // 关闭句柄。 	return TRUE; } CString EditPltData(CString InString){ 	CString OutString=""; 	if (InString.GetLength()>45) 	{ 		InString=InString.Mid(45,InString.GetLength()-54); 		int forlen=InString.GetLength(); 		CString Ncstring=""; 		CString Tmpstr1,Tmpstr2="PU;PD;"; 		char Gchar[7]; 		Gchar[6]='\0'; 		for (int i=0;forlen>i;i++) 		{ 			Gchar[0]=InString.GetAt(i); 			Gchar[1]=InString.GetAt(i+1); 			Gchar[2]=InString.GetAt(i+2); 			Gchar[3]=InString.GetAt(i+3); 			Gchar[4]=InString.GetAt(i+4); 			Gchar[5]=InString.GetAt(i+5); 			Tmpstr1=Gchar; 			if (Tmpstr1==Tmpstr2){//如果这6个字符是PU;PD跳过。 				i=i+5; 				continue; 			} 			OutString=OutString+InString.GetAt(i); 		} 	} 	return OutString; } bool PLTFileDeletePUPD(char* InFilePath/*读入的文件包含路径*/,char* OutFilePath /*写出的文件包含路径*/){ 	CString ReadStr=BC_ReadFile(InFilePath);//读文件 	CString NewStr=EditPltData(ReadStr);//编辑文件内容 	BC_WriteFile(OutFilePath,NewStr);//写出文件 	return TRUE; } int _tmain(int argc, _TCHAR* argv[]) { 	PLTFileDeletePUPD("c:\\work\\TEMP0.PLT","c:\\work\\BDYCUT0.PLT"); 	return 0; } 这是本人近来编写的VC代码，用VC6.0可以编译出EXE运行，但是把EXE文件搬到纯DOS系统时，不让运行，上来请教一下各位，怎么改写存纯C的？本人自学VC ，因为学的不太全面，见笑了。

user: user-5
content: 不要做A语言代码修改为B语言代码的无用功。 也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。 只需让A、B语言代码的输入输出重定向到文本文件，或修改A、B语言代码让其通过文本文件输入输出。 即可很方便地让A、B两种语言之间协调工作。