『壹』 鐜板湪寮鍙戣蒋浠跺熀鏈涓婇兘鐢ㄩ珮绾ц瑷渚嬪侰璇瑷锛屾寜鐞嗚翠笉瀛樺湪CPU鎸囦护鏋舵瀯鐨勫吋瀹归棶棰樺惂锛
鎴戜箣鍓嶄篃鎻愬嚭杩囩浉鍏崇殑闂棰樸傛瘮浣犳彁鍑虹殑鏇存繁銆灏盋PU鏋舵瀯鏉ヨ达紝鍙浠ュ垎涓篨86锛孉RM銆灏監S骞冲彴鏉ヨ达紝NT linux UNIX绛夈瀵逛簬搴曞眰銆侀┍鍔ㄥ眰鏉ヨ达紝C璇瑷灏辨槸姹囩紪璇瑷鐨勫姛鑳姐傝佹搷浣滅殑閮芥槸瀵勫瓨鍣锛屽唴瀛橈紝CPU锛孖O銆傝繖閮ㄥ垎鏄涓嶅彲浠ョЩ妞嶇殑锛屽彧鏄鐢–璇瑷鎻忚堪鑰屽凡锛岃繖閮ㄥ垎鍩烘湰鏄涓嶅彲绉绘嶏紝鍥犱负闇瑕佸圭‖浠跺垵濮嬪寲锛岄厤缃锛屼笉鍚屾寚浠ら泦寰堝氳佸仛淇鏀癸紝鐢氳嚦閲嶆柊瀹炵幇銆浣犳兂鎯筹紝鎴戣佺敤C璇瑷鍐欎竴涓涓鏂锛岄偅涓嶆槸瑕佹牴鎹瓹PU鐨勭粨鏋勬潵瀵逛笉鍚岀殑瀵勫瓨鍣锛岃℃椂鍣ㄧ殑鍊间慨鏀瑰悧锛熷簳灞備唬鐮佹庝箞鑳介殢渚跨Щ妞嶅憿锛鑰屽逛簬OS浠ヤ笂鐨勫簲鐢ㄥ眰锛屽彲绉绘嶆у氨姣旇緝楂樸備絾鏄杩樻槸浼氬洜涓篊PU锛孫S鐨勫樊寮傦紝瑕佸仛浜涗慨鏀广傚洜涓猴紝C璇瑷鍙鏄璇瑷锛岀敤鐨勫嚱鏁拌窡璇瑷鏃犲叧銆傛瘮濡侰璇瑷鍙浠ョ敤鏍囧噯鐨凜搴撱俿tdio.h stdlib.h杩欎簺銆備絾鏄瀵逛簬windows绋嬪簭鏉ヨ达紝C鍚屾牱鍙浠ョ敤windows.h銆備絾姝ゆ椂锛岀敤鐨勫氨鏄痺indows涓嬬殑鍑芥暟锛宭inux鍐呮牳鐨勬搷浣滅郴缁熷氨涓嶅彲浠ヤ娇鐢╳indows.h锛岃繖鏄痺indows鐨凙PI銆傛墍浠ヤ笉鍙绉绘嶏紝搴旂敤灞傚彲鍚︾Щ妞嶅氨鐪嬩綘鐢ㄧ殑鏄涓嶆槸鍙绉绘嶇殑搴撱QT灏辨槸涓涓鍙绉绘嶆у緢寮虹殑搴擄紝涔嬫墍浠ュ彲绉绘嶏紝鏄鍥犱负鍚屾牱鐨勬簮鐮侊紝缂栬瘧鏃堕摼鎺ョ殑lib鏄鍚勮嚜骞冲彴鐨勫簱锛.h澶存枃浠跺彧鏄澹版槑鐢ㄥ摢涓猯ib鐨勯偅涓鍑芥暟銆傝櫧鐒舵槸澹版槑鏄鍚屼竴涓猯ib閲岄潰鐨勫悓涓涓鍑芥暟銆備絾鏄浜嬪疄涓婁笉鍚屽钩鍙扮殑lib鐨勫唴瀹逛笉鍚岋紝浣嗛兘鏄涓涓鏁堟灉銆傛墍浠ュ氨鍙浠ョЩ妞嶃瀹為檯涓婂氨鏄鐪嬩竴涓搴擄紝鏄涓嶆槸鍦ㄥ氫釜骞冲彴鏀鎸侊紝濡傛灉鏄鐨勮瘽灏卞彲浠ョЩ妞嶃傛瘮濡俹pengl锛実tk+锛孲DL杩欎簺灏卞彲浠ュ湪nt linux涓婄浉浜掔Щ妞嶃侰搴撳熀鏈鏄浠讳綍鎿嶄綔绯荤粺閮藉彲浠ョ殑銆
『贰』 c语言怎么把宏定义的数据配置到文件中,当需要更改某些数据时,不需要打开程序,在文件中直接修改。
无论是头文件还是源文抄件 不安装编译环境的情况下 用txt 打开基本也没问题 只是有的时候需要改变下打开方式如果是需要把数据配置到文件中 那么就要用到C语言的文件操作功能。设定为在程序运行时读入指定位置的文件数据,按一定规则赋值给其他变量就行。具体操作可以 网络文库 C语言文件操作但是这种方法不是用在宏定义上,宏只是一种编译前的替换,如果这个程序已经编译好了 就算能通过文本修改也没用 除非 再次编译。如果非要实现相近的功能 可以不定义宏,而是通过文件操作功能。在用到相关变量的时候通过文件读取获的。这样就能在不用再次编译的条件下,实现修改。
『叁』 LINUX的应用程序控制文件,如.conf是什么语言编写的下附举例.
这种语言是类C语言,往往有变成人员自己定义,不执行或不可执行,只是由某个软件检查并根据配置文件做相应的动作。
『肆』 涓轰粈涔坈璇瑷鐨勭紪璇戝櫒鍙浠ョ敤c璇瑷鏉ュ啓锛
鎴戞槸杩欐牱鎯崇殑锛岀涓涓缂栬瘧鍣ㄨ偗瀹氫笉鏄疌璇瑷锛屼絾鏄鏈変簡C缂栬瘧鍣ㄥ氨鍙浠ョ紪璇慍璇瑷鍟︼紝缂栬瘧鍣ㄤ篃鏄绋嬪簭瀵瑰惂锛屼簩杩涘埗浠g爜锛屽彲浠ヨ繍琛岋紝鐒跺悗鍙堢敤C璇瑷鍐欐洿濂界殑缂栬瘧鍣ㄧ敤鐜板湪鐨勭紪璇戝櫒缂栨垚鍙鎵ц屼唬鐮併傛垜鏄杩欐牱鎯崇殑鍛靛懙锛屽ソ姣斿湴鐞冧笂鏈変簡绗涓涓鐢熷懡锛岀劧鍚庤繖涓鐢熷懡鍙堝瓡鑲插嚭浜嗘柊鐨勭敓鍛姐
『伍』 用C语言读取一个文件中的内容,如何对不同的行进行解析,比如是配置文件
很简单的 配置文件 微软有抓们的一套解析函数 INI文件是Windows系统中一类比较重要的文件,通常用来存放系统或者应用程序的配置信息,以方便系统或者应用 程序在初始化时再次读入。比如Windows系统中的配置文件win.ini和system.ini,它们就主要存放系统启动或用户登陆时的系统信息。这 项功能在方便了系统配置的同时,也为非法程序的自动运行提供了可乘之机。显然,这类文件的重要性应该引起我们的重视。但是对于这样的ini文件的读写操作 却与普通文本文件有着种种的不同,尤其体现在编程实现上。笔者曾经尝试用手动更改的方法在文件中加入一些项,使得自己的程序能够在初始化时自动运行,但是 却没有成功,最后还是藉由编程的方法来实现了。这里主要涉及到一些API函数,而这些函数又往往不被人们所熟知,本文的任务就是在介绍这些函数的同时,用 简单的程序作了示例,下面我们言归正传。先来看几个往配置文件中写入信息的函数:(1)WritePrivateProfileSection()用来在ini文件中直接向指定区域写入键和值的信息,其原型如下:BOOL WritePrivateProfileSection(LPCTSTR lpAppName, // 指向指定字段的字符串LPCTSTR lpString, // 指向要写入的键与值字符串LPCTSTR lpFileName // 指向文件名称字符串,如果不包含完整路径,则在windows目录下创建);用法示例:WritePrivateProfileSection(_T(“windows”),_T(“load=c:\\winnt\\notepad.exe”),_T(“c:\\winnt\\win.ini”));(2)WritePrivateProfileString()与上一个函数的不同点在于其将键和值分开了,原型如下:BOOL WritePrivateProfileString(LPCTSTR lpAppName, // 指向指定字段的字符串LPCTSTR lpKeyName, // 指向指定键的字符串LPCTSTR lpString, // 指向指定值的字符串LPCTSTR lpFileName // 指向文件名称字符串);用法示例:WritePrivateProfileString(_T(“windows”),_T(load”)_T(“c:\\winnt\\notepad.exe”),_T(“c:\\winnt\\win.ini”));(3)WritePrivateProfileStruct()与前面两个的不同在于文件尾有校验和,原型如下:BOOL WritePrivateProfileStruct(LPCTSTR lpszSection, //指向指定字段的字符串LPCTSTR lpszKey, //指向指定键的字符串LPVOID lpStruct, //指向存放要加入的数据的缓冲区,如果为NULL,则删除键UINT uSizeStruct, //缓冲区大小,以字节为单位LPCTSTR szFile //以零结尾的文件名称字符串,如果为空,则向win.ini写入);用法示例:WritePrivateProfileStruct(_T(“windows”),_T(“load”),pBuffer,sizeof(pBuffer),_T(“c:\\winnt\\win.ini”));(4)还有两个函数,是专门用来向win.ini文件写入的,函数原型如下:BOOL WriteProfileSection(LPCTSTR lpAppName, //指向指定字段的字符串LPCTSTR lpString //指向指定值的字符串);BOOL WriteProfileString(LPCTSTR lpAppName, //指向指定字段的字符串LPCTSTR lpKeyName, //指向指定键的字符串LPCTSTR lpString //指向指定值的字符串);下面来看几个对应的从ini文件获取信息的API函数,上面已经说得很详细了,这里只说其中两个:DWORD GetPrivateProfileString(LPCTSTR lpAppName, //指向指定字段的字符串LPCTSTR lpKeyName, //指向键的字符串LPCTSTR lpDefault, //如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量LPTSTR lpReturnedString, //存放INI文件中值的目的缓存区DWORD nSize, //目的缓冲区的大小,以字节为单位LPCTSTR lpFileName //指向INI文件名称的字符串); UINT GetPrivateProfileInt(LPCTSTR lpAppName, //指向指定字段的字符串LPCTSTR lpKeyName, //指向键的字符串INT nDefault, //如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量LPCTSTR lpFileName //指向INI文件名称的字符串);程序示例1: 我们在这里建立了一个应用程序“App Name”,并且使用了一个INI文件“appname.ini”,在此INI文件中,我们写入如下内容:[Section1] FirstKey = It all worked out okay. SecondKey = By golly, it works. ThirdKey = Another test. 代码分析如下:#include <stdio.h> #include <windows.h>//主函数main() { //定义局部CHAR inBuf[80]; HKEY hKey1, hKey2; DWORD dwDisposition; LONG lRetCode; // 试图创建INI文件的键值lRetCode = RegCreateKeyEx ( HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT \\CurrentVersion\\IniFileMapping\\appname.ini", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey1, &dwDisposition); //判断是否出错if (lRetCode != ERROR_SUCCESS){ printf ("Error in creating appname.ini key\n"); return (0) ; } //试图设置一个节区的值lRetCode = RegSetValueEx ( hKey1, "Section1", 0, REG_SZ, "USR:App Name\\Section1", 20); //判断是否出错if (lRetCode != ERROR_SUCCESS) { printf ( "Error in setting Section1 value\n"); return (0) ; } //试图创建一个应用名称键值lRetCode = RegCreateKeyEx ( HKEY_CURRENT_USER, "App Name", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey2, &dwDisposition); //判断是否出错if (lRetCode != ERROR_SUCCESS) { printf ("Error in creating App Name key\n"); return (0) ; }//强制系统重新读取映射区的内容到共享内存中,以便于将来对应用程序的调用可//以找到它,而不需要重新启动系统 WritePrivateProfileStringW( NULL, NULL, NULL, L"appname.ini" ); //向INI文件中添加一些键值 WritePrivateProfileString ("Section1", "FirstKey", "It all worked out okay.", "appname.ini"); WritePrivateProfileString ("Section1", "SecondKey", "By golly, it works.", "appname.ini"); WritePrivateProfileSection ("Section1", "ThirdKey = Another Test.", "appname.ini"); //测试一下添加的正确性GetPrivateProfileString ("Section1", "FirstKey", "Bogus Value: Get didn't work", inBuf, 80, "appname.ini"); printf ("%s", inBuf); return(0); }程序示例2:通过修改win.ini中的字段[windows]中的键load或run,或者是为system.ini中的字段[boot]中的键 shell增加值,可以达到设置程序自动运行的目的。假设我们要自动运行notepad.exe,修改后的win.ini或system.ini文件象这 样就可以:win.ini[windows]load=c:\winnt\notepad.exerun=c:\winnt\notepad.exesystem.ini[boot]shell=c:\winnt\explorer.exe c:\winnt\notepad.exe注意:system.ini文件的修改要特别注意,如果你单纯改成shell=c:\winnt\notepad.exe,则不能首先运行 explorer.exe,很明显你将看不到桌面和任务栏,呵呵,笔者在做实验时就曾因为粗心造成了这样的后果,不过不用害怕,只要你用我们下面提供的程 序,将它修改过来就可以了,默认时,系统在system.ini中的[boot]下是shell=c:\winnt\explorer.exe。很多非法 程序就是通过修改这两个文件来达到自启动的目的的。下面这个程序可以在附书光盘中找到,名称为“AutoPlay”,使用VC++6.0写成,核心程序源代码如下:void CAutoRunDlg::OnBrowse() {//只浏览exe文件CfileDialog fileDlg(TRUE,_T("EXE"),_T("*.exe"),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,(_T("Executable Files (*.exe) |*.exe ||")));//显示打开文件的对话框//当操作者选择OK时,程序取得选择文件的全路径名(包括文件的路径及文件名称),并将相应的数值传输给相关的控件变量。if(fileDlg.DoModal()==IDOK){ m_strFileName=fileDlg.GetPathName();//向将变量中的数值传输给控件显示出来。 UpdateData(FALSE);} }void CAutoRunDlg::OnApply() {//更新数据UpdateData(TRUE); //写入ini文件LPCTSTR filename; filename=m_strFileName; WritePrivateProfileString(_T("windows"),_T("load"),filename,_T("c:\\winnt\\win.ini"));}您如果要更改system.ini,可以将WritePrivateProfileString(_T("windows"),_T("load"),filename,_T("c:\\winnt\\win.ini"));改为 WritePrivateProfileString(_T("boot"),_T("shell"),filename,_T("c:\\winnt \\system.ini"));并且在输入文件名时输入c:\winnt\explorer.exe c:\winnt\notepad.exe。写到这里,本文的意图基本达到,如果您可以把某些代码亲自实现,相信读者会有比较大的收获。
『陆』 dll文件大都使用C语言或者C++编写的吗 我从网上搜相关的例子都是这两种语言编写的
DLL(Dynamic Linkable Library)是动态链接库的缩写,是一种磁盘文件格式,可包含各种编程资源(图标、字符版串)、函数权、类库、数据,Com组件,任何编译器都可以编写DLL文件,因此不同的编译器可编译的DLL文件并不相同,因为他们封装不同,从而并是所有DLL文件可以在任意平台上简单调用。 C++可以编译大部分类型的DLL,VB可以编译Com组件,需要说明的是,C#编译的DLL文件无法直接在C++和VB中调用,必须在项目中做些设置,指示编译器编译成使Com组件可见,并为所有类和方法提供接口,方可提供给其他平台以COM方式调用。