本文關(guān)鍵詞: c++ 字符串 函數(shù) char *STRcpy(char *s1, const char *s2) 將字符串s2復(fù)制到字符串?dāng)?shù)組s1中,返回s1的值 char *strncpy(char *s1, const char *s2, size_t n) 將字符串s2中最多n個(gè)字符復(fù)制到字符串?dāng)?shù)組s1中,返回s1的值
標(biāo)簽: char STRcpy const 字符串
上傳時(shí)間: 2016-07-09
上傳用戶:lz4v4
相信長(zhǎng)期編程的同志們總會(huì)為忘記了fprintf,STRcpy,memcpy等常用函數(shù)的格式而煩心吧,為這點(diǎn)破事而裝個(gè)MSDN實(shí)在不劃算,因此小弟為大家提供了C語言函數(shù)庫速查手冊(cè),CHM格式
標(biāo)簽: fprintf STRcpy memcpy 編程
上傳時(shí)間: 2013-12-17
上傳用戶:c12228
編寫STRcpy函數(shù),雖然簡(jiǎn)單,但是能檢驗(yàn)出點(diǎn)水平的一個(gè)練習(xí),在高質(zhì)量c里有介紹.
標(biāo)簽: STRcpy 編寫 函數(shù) 水平
上傳時(shí)間: 2016-08-29
上傳用戶:奇奇奔奔
C函數(shù)速查手冊(cè) 出版社:人民郵電出版社 《C函數(shù)速查手冊(cè)》中所講的C語言函數(shù)按照功能順序和字母順序進(jìn)行排序,讀者既可以按照功能順序查找,也可以按照字母順序?qū)W習(xí)。《C函數(shù)速查手冊(cè)》不僅適合于C語言初學(xué)者學(xué)習(xí)使用,而且也可以作為中、高級(jí)C語言開發(fā)人員的參考手冊(cè)。 目錄 第1章 數(shù)學(xué)函數(shù) 1.1 _clear87函數(shù):清除浮點(diǎn)狀態(tài)字 1.2 _status87函數(shù):取浮點(diǎn)狀態(tài)字 1.3 abs函數(shù):求整數(shù)的絕對(duì)值 1.4 acos、acosl函數(shù):反余弦函數(shù) 1.5 asin、asinl函數(shù):反正弦函數(shù) 1.6 atan函數(shù):反正切函數(shù) 1.7 atan2、atan2l函數(shù):計(jì)算Y/X的反正切值 1.8 cabs函數(shù):計(jì)算復(fù)數(shù)的模 1.9 ceil函數(shù):向上取整 1.10 cos函數(shù):余弦函數(shù) 1.11 cosh函數(shù):雙曲余弦函數(shù) 1.12 div函數(shù):求兩個(gè)整數(shù)相除的商和余數(shù) 1.13 exp函數(shù):指數(shù)函數(shù) 1.14 fabs函數(shù):求浮點(diǎn)數(shù)的絕對(duì)值 1.15 floor函數(shù):向下取整 1.16 fmod函數(shù):計(jì)算x對(duì)y的模 1.17 frexp函數(shù):將浮點(diǎn)數(shù)分為底數(shù)與指數(shù) 1.18 hypot函數(shù):計(jì)算直角三角形的斜邊 1.19 labs函數(shù):取長(zhǎng)整數(shù)的絕對(duì)值 1.20 ldexp、ldexpl函數(shù):冪計(jì)算 1.21 ldiv函數(shù):兩個(gè)長(zhǎng)整型數(shù)相除 1.22 log、logl函數(shù):計(jì)算自然對(duì)數(shù) 1.23 log10、log10l函數(shù):計(jì)算常用對(duì)數(shù) 1.24 max函數(shù):求兩個(gè)數(shù)中的最大者 1.25 min函數(shù):求兩個(gè)數(shù)中的最小者 1.26 modf、modfl函數(shù):分割數(shù)為整數(shù)部分和小數(shù)部分 1.27 poly函數(shù):計(jì)算多項(xiàng)式 1.28 pow函數(shù):指數(shù)函數(shù) 1.29 pow10函數(shù):指數(shù)函數(shù) 1.30 rand函數(shù):隨機(jī)數(shù)發(fā)生器 1.31 random函數(shù):隨機(jī)數(shù)發(fā)生器 1.32 randomize函數(shù):初始化隨機(jī)數(shù)發(fā)生器 1.33 sin函數(shù):正弦函數(shù) 1.34 sinh函數(shù):雙曲正弦函數(shù) 1.35 sqrt函數(shù):計(jì)算平方根 1.36 srand函數(shù):初始化隨機(jī)數(shù)發(fā)生器 1.37 tan、tanl函數(shù):正切函數(shù) 1.38 tanh、tanhl函數(shù):雙曲正切函數(shù) 第2章 字符串函數(shù) 2.1 atof函數(shù):把字符串轉(zhuǎn)換成浮點(diǎn)數(shù) 2.2 atoi函數(shù):將字符串轉(zhuǎn)換成整型數(shù) 2.3 atol函數(shù):將字符串轉(zhuǎn)換成長(zhǎng)整型數(shù) 2.4 ecvt函數(shù):將浮點(diǎn)數(shù)轉(zhuǎn)換為字符串 2.5 fcvt函數(shù):將浮點(diǎn)數(shù)轉(zhuǎn)換為字符串 2.6 gcvt函數(shù):將浮點(diǎn)數(shù)轉(zhuǎn)換成字符串 2.7 itoa函數(shù):將整數(shù)值轉(zhuǎn)換為字符串 2.8 isalnum函數(shù):字母、數(shù)字判斷函數(shù) 2.9 isalpha函數(shù):字母判斷函數(shù) 2.10 isascii函數(shù):整數(shù)值的字符分類 2.11 iscntrl函數(shù):控制字符判斷函數(shù) 2.12 isdigit函數(shù):數(shù)字判斷函數(shù) 2.13 isgraph函數(shù):打印字符判斷 2.14 islower函數(shù):小寫字母判斷函數(shù) 2.15 isprint函數(shù):可打印字符判斷函數(shù) 2.16 isptmct函數(shù):標(biāo)點(diǎn)符號(hào)判斷函數(shù) 2.17 isspace函數(shù):空格等判斷函數(shù) 2.18 isupper函數(shù):大寫字母判斷函數(shù) 2.19 isxdigit函數(shù):十六進(jìn)制數(shù)字判斷函數(shù) 2.20 ltoa函數(shù):將長(zhǎng)整值轉(zhuǎn)換為字符串 2.21 mbstowcs函數(shù):將多字節(jié)字符序列轉(zhuǎn)換成相應(yīng)的寬字符序列 2.22 mbtowc函數(shù):將多字節(jié)字符轉(zhuǎn)換成相應(yīng)的寬字符 2.23 stpcpy函數(shù):復(fù)制字符串 2.24 strcat函數(shù):拼接字符串 2.25 strchr函數(shù):查找給定字符 2.26 strcmp函數(shù):比較字符串 2.27 strcmpi函數(shù):比較字符串 2.28 STRcpy函數(shù):復(fù)制字符串 2.29 strcspn函數(shù):查找不包含指定字符集子串的段 2.30 strdup函數(shù):將字符串復(fù)制到新建的位置 2.31 stricmp函數(shù):比較字符串 2.32 strlen函數(shù):獲取字符長(zhǎng)度
標(biāo)簽: 函數(shù) 書下載 速查手冊(cè)
上傳時(shí)間: 2014-12-25
上傳用戶:水口鴻勝電器
有兩種方式可以讓設(shè)備和應(yīng)用程序之間聯(lián)系:1. 通過為設(shè)備創(chuàng)建的一個(gè)符號(hào)鏈;2. 通過輸出到一個(gè)接口WDM驅(qū)動(dòng)程序建議使用輸出到一個(gè)接口而不推薦使用創(chuàng)建符號(hào)鏈的方法。這個(gè)接口保證PDO的安全,也保證安全地創(chuàng)建一個(gè)惟一的、獨(dú)立于語言的訪問設(shè)備的方法。一個(gè)應(yīng)用程序使用Win32APIs來調(diào)用設(shè)備。在某個(gè)Win32 APIs和設(shè)備對(duì)象的分發(fā)函數(shù)之間存在一個(gè)映射關(guān)系。獲得對(duì)設(shè)備對(duì)象訪問的第一步就是打開一個(gè)設(shè)備對(duì)象的句柄。 用符號(hào)鏈打開一個(gè)設(shè)備的句柄為了打開一個(gè)設(shè)備,應(yīng)用程序需要使用CreateFile。如果該設(shè)備有一個(gè)符號(hào)鏈出口,應(yīng)用程序可以用下面這個(gè)例子的形式打開句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3", GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統(tǒng)本調(diào)用希望打開一個(gè)設(shè)備。這個(gè)設(shè)備必須有一個(gè)符號(hào)鏈,以便應(yīng)用程序能夠打開它。有關(guān)細(xì)節(jié)查看有關(guān)Kdevice和CreateLink的內(nèi)容。在上述調(diào)用中第一個(gè)參數(shù)中前綴后的部分就是這個(gè)符號(hào)鏈的名字。注意:CreatFile中的第一個(gè)參數(shù)不是Windows 98/2000中驅(qū)動(dòng)程序(.sys文件)的路徑。是到設(shè)備對(duì)象的符號(hào)鏈。如果使用DriverWizard產(chǎn)生驅(qū)動(dòng)程序,它通常使用類KunitizedName來構(gòu)成設(shè)備的符號(hào)鏈。這意味著符號(hào)鏈名有一個(gè)附加的數(shù)字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應(yīng)用程序需要被覆蓋的I/O,第六個(gè)參數(shù)(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個(gè)輸出接口打開句柄用這種方式打開一個(gè)句柄會(huì)稍微麻煩一些。DriverWorks庫提供兩個(gè)助手類來使獲得對(duì)該接口的訪問容易一些,這兩個(gè)類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個(gè)設(shè)備信息集,該信息集包含了特殊類中的所有設(shè)備接口信息。應(yīng)用程序能有用CdeviceInterfaceClass類的一個(gè)實(shí)例來獲得一個(gè)或更多的CdeviceInterface類的實(shí)例。CdeviceInterface類是一個(gè)單一設(shè)備接口的抽象。它的成員函數(shù)DevicePath()返回一個(gè)路徑名的指針,該指針可以在CreateFile中使用來打開設(shè)備。下面用一個(gè)小例子來顯示這些類最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface( GUID* pClassGuid, DWORD instance, PDWORD pError){ CDeviceInterfaceClass DevClass(pClassGuid, pError); if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; CDeviceInterface DevInterface(&DevClass, instance, pError); if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; cout << "The device path is " << DevInterface.DevicePath() << endl; HANDLE hDev; hDev = CreateFile( DevInterface.DevicePath(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (hDev == INVALID_HANDLE_VALUE) *pError = GetLastError(); return hDev;} 在設(shè)備中執(zhí)行I/O操作一旦應(yīng)用程序獲得一個(gè)有效的設(shè)備句柄,它就能使用Win32 APIs來產(chǎn)生到設(shè)備對(duì)象的IRPs。下面的表顯示了這種對(duì)應(yīng)關(guān)系。Win32 API DRIVER_FUNCTION_xxxIRP_MJ_xxx KDevice subclass member function CreateFile CREATE Create ReadFile READ Read WriteFile WRITE Write DeviceIoControl DEVICE_CONTROL DeviceControl CloseHandle CLOSECLEANUP CloseCleanUp 需要解釋一下設(shè)備類成員的Close和CleanUp:CreateFile使內(nèi)核為設(shè)備創(chuàng)建一個(gè)新的文件對(duì)象。這使得多個(gè)句柄可以映射同一個(gè)文件對(duì)象。當(dāng)這個(gè)文件對(duì)象的最后一個(gè)用戶級(jí)句柄被撤銷后,I/O管理器調(diào)用CleanUp。當(dāng)沒有任何用戶級(jí)和核心級(jí)的對(duì)文件對(duì)象的訪問的時(shí)候,I/O管理器調(diào)用Close。如果被打開的設(shè)備不支持指定的功能,則調(diào)用相應(yīng)的Win32將引起錯(cuò)誤(無效功能)。以前為Windows95編寫的VxD的應(yīng)用程序代碼中可能會(huì)在打開設(shè)備的時(shí)候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個(gè)屬性,因?yàn)樗鼘?dǎo)致沒有特權(quán)的用戶企圖打開這個(gè)設(shè)備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數(shù)轉(zhuǎn)換成IRP域的方法依賴于設(shè)備對(duì)象的屬性。當(dāng)設(shè)備設(shè)置DO_DIRECT_IO標(biāo)志,I/O管理器將buff鎖住在存儲(chǔ)器中,并且創(chuàng)建了一個(gè)存儲(chǔ)在IRP中的MDL域。一個(gè)設(shè)備可以通過調(diào)用Kirp::Mdl來存取MDL。當(dāng)設(shè)備設(shè)置DO_BUFFERED_IO標(biāo)志,設(shè)備對(duì)象分別通過KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或?qū)懖僮鳙@得buff地址。當(dāng)設(shè)備不設(shè)置DO_BUFFERED_IO標(biāo)志也不設(shè)置DO_DIRECT_IO,內(nèi)核設(shè)置IRP 的UserBuffer域來對(duì)應(yīng)ReadFile或WriteFile中的buff參數(shù)。然而,存儲(chǔ)區(qū)并沒有被鎖住而且地址只對(duì)調(diào)用進(jìn)程有效。驅(qū)動(dòng)程序可以使用KIrp::UserBuffer來存取IRP域。對(duì)于DeviceIoControl調(diào)用,buffer參數(shù)的轉(zhuǎn)換依賴于特殊的I/O控制代碼,它不在設(shè)備對(duì)象的特性中。宏CTL_CODE(在winioctl.h中定義)用來構(gòu)造控制代碼。這個(gè)宏的其中一個(gè)參數(shù)指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對(duì)應(yīng)的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數(shù):Method Input Buffer Parameter Output Buffer Parameter METHOD_BUFFERED KIrp::IoctlBuffer KIrp::IoctlBuffer METHOD_IN_DIRECT KIrp::IoctlBuffer KIrp::Mdl METHOD_OUT_DIRECT KIrp::IoctlBuffer KIrp::Mdl METHOD_NEITHER KIrp::IoctlType3InputBuffer KIrp::UserBuffer 如果控制代碼指明METHOD_BUFFERED,系統(tǒng)分配一個(gè)單一的緩沖來作為輸入與輸出。驅(qū)動(dòng)程序必須在向輸出緩沖放數(shù)據(jù)之前拷貝輸入數(shù)據(jù)。驅(qū)動(dòng)程序通過調(diào)用KIrp::IoctlBuffer獲得緩沖地址。在完成時(shí),I/O管理器從系統(tǒng)緩沖拷貝數(shù)據(jù)到提供給Ring 3級(jí)調(diào)用者使用的緩沖中。驅(qū)動(dòng)程序必須在結(jié)束前存儲(chǔ)拷貝到IRP的Information成員中的數(shù)據(jù)個(gè)數(shù)。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數(shù)呈現(xiàn)不同的含義。參數(shù)InputBuffer被拷貝到一個(gè)系統(tǒng)緩沖,這個(gè)緩沖驅(qū)動(dòng)程序可以通過調(diào)用KIrp::IoctlBuffer。參數(shù)OutputBuffer被映射到KMemory對(duì)象,驅(qū)動(dòng)程序?qū)@個(gè)對(duì)象的訪問通過調(diào)用KIrp::Mdl來實(shí)現(xiàn)。對(duì)于METHOD_OUT_DIRECT,調(diào)用者必須有對(duì)緩沖的寫訪問權(quán)限。注意,對(duì)METHOD_NEITHER,內(nèi)核只提供虛擬地址;它不會(huì)做映射來配置緩沖。虛擬地址只對(duì)調(diào)用進(jìn)程有效。這里是一個(gè)用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來定義一個(gè)IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現(xiàn)在使用一個(gè)DeviceIoControl調(diào)用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING, NULL, // no input 注意,這里放的是包含有執(zhí)行操作命令的字符串指針 0, FirmwareRev, //這里是output串指針,存放從驅(qū)動(dòng)程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize, NULL // not overlapped I/O );如果輸出緩沖足夠大,設(shè)備拷貝串到里面并將拷貝的資結(jié)束設(shè)置到FirmwareRevSize中。在驅(qū)動(dòng)程序中,代碼看起來如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){ ULONG fwLength=0; switch ( I.IoctlCode() ) { case IOCTL_MYDEV_GET_FIRMWARE_REV: fwLength = strlen(FIRMWARE_REV)+1; if (I.IoctlOutputBufferSize() >= fwLength) { STRcpy((PCHAR)I.IoctlBuffer(),FIRMWARE_REV); I.Information() = fwLength; return I.Complete(STATUS_SUCCESS); } else { } case . . . } }
標(biāo)簽: 驅(qū)動(dòng)程序 應(yīng)用程序 接口
上傳時(shí)間: 2013-10-17
上傳用戶:gai928943
/* * 讀取INI文件的函數(shù)(C語言) * File: readinifile.h * Read INI File * char* GetInitKey(FileName, Section, Key) * Return Key=>Value * + [config] * + dbhost=localhost * * STRcpy(dbhost,GetInitKey("config.ini", "config", "dbhost")) */
標(biāo)簽: File readinifile GetInitKey INI
上傳時(shí)間: 2015-07-01
上傳用戶:李彥東
C++面試許多面試題看似簡(jiǎn)單,卻需要深厚的基本功才能給出完美的解答。企業(yè)要求面試者寫一個(gè)最簡(jiǎn)單的STRcpy函數(shù)都可看出面試者在技術(shù)上究竟達(dá)到了怎樣的程度,我們能真正寫好一個(gè)STRcpy函數(shù)嗎?我們都覺得自己能,可是我們寫出的STRcpy很可能只能拿到10分中的2分。讀者可從本文看到STRcpy函數(shù)從2分到10分解答的例子,看看自己屬于什么樣的層次。此外,還有一些面試題考查面試者敏捷的思維能力。
標(biāo)簽: 面試題
上傳時(shí)間: 2017-03-22
上傳用戶:gut1234567
有關(guān)C語言中字符串的操作的一些經(jīng)典程序,STRcpy,MEMCPY,數(shù)組越界還有一些其他的程序
上傳時(shí)間: 2017-08-01
上傳用戶:wsf950131
V1.16 Win32 July 2012 - Ported to Win32 C++ - Allow multiple instances of libnids to coexist in the same process - Incorporate unofficial patch to track established TCP connections - Migration of calls to secure versions (i.e. STRcpy to STRcpy_s) - Compiles under Visual Studio 2010 with no warnings at W4 - Linux support well and truly broken, Linux specific code removed
標(biāo)簽: libnids-Win32
上傳時(shí)間: 2016-07-30
上傳用戶:mxgg126
#include <iostream.h> #include <string.h> #include <iomanip.h> #include "Stud.h" Stud::Stud(){} char *Stud::getno() //獲取學(xué)號(hào) { return no; } char *Stud::getname() //獲取姓名 { return name; } char *Stud::getsex() //獲取性別 { return sex; } char *Stud::getminzu() //獲取民族 { return minzu; } char *Stud::getaddress() //獲取出生地 { return address; } char *Stud::getbirth() //獲取出生年月 { return birth; } int Stud::gettag() //獲取姓名 { return tag; } void Stud::changeno(char n[]) //設(shè)置學(xué)號(hào) { STRcpy(no,n); } void Stud::changename(char na[]) //設(shè)置姓名 { STRcpy(name,na); } void Stud::changesex(char s[]) //設(shè)置性別 { STRcpy(sex,s); } void Stud::changeminzu(char m[]) //設(shè)置民族 { STRcpy(minzu,m); } void Stud::changeaddress(char a[]) //設(shè)置出生地 { STRcpy(address,a); } void Stud::changebirth(char b[]) //設(shè)置出生年月 { STRcpy(birth,b); } void Stud::addstudent(char *rn,char *rna) //增加學(xué)生 { STRcpy(no,rn); STRcpy(name,rna); } void Stud::addstudent(char *rn,char *rna,char *rs,char *rm,char *ra,char *rb) //增加學(xué)生 { tag=0; STRcpy(no,rn); STRcpy(name,rna); STRcpy(sex,rs); STRcpy(minzu,rm); STRcpy(address,ra); STRcpy(birth,rb); } void Stud::delstud() //設(shè)置刪除標(biāo)記 { tag=1; } void Stud::disp() //輸出學(xué)生信息 { cout<<setw(15)<<no<<setw(10)<<name<<setw(10)<<sex<<setw(10)<<minzu<<setw(10)<<address<<setw(10)<<birth<<endl; } void Stud::display() //輸出學(xué)生信息 { cout<<setw(15)<<no<<setw(10)<<name; }
標(biāo)簽: 學(xué)生
上傳時(shí)間: 2016-12-29
上傳用戶:767483511
蟲蟲下載站版權(quán)所有 京ICP備2021023401號(hào)-1