日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

strcpy_s、sptintf_s与strcat_s的使用

發布時間:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 strcpy_s、sptintf_s与strcat_s的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

strcpy_s、sptintf_s與strcat_s是strcpy、sptintf與strcat的安全版本,均是通過指定緩沖區長度來避免存在的溢出風險。

strcpy_s 與strcpy

strcpy_s和strcpy函數的功能幾乎是一樣的。strcpy函數,就象gets函數一樣,它沒有方法來保證有效的緩沖區尺寸,所以它只能假定緩沖足夠大來容納要拷貝的字符串。在程序運行時,這將導致不可預料的行為。用strcpy_s就可以避免這些不可預料的行為。

這個函數用兩個參數、三個參數都可以,只要可以保證緩沖區大小。
三個參數時:
? ? ? ? ? ? ? ? ? ? ? ? errno_t strcpy_s(char *strDestination,size_t numberOfElements,const char *strSource);
兩個參數時:
? ? ? ? ? ? ? ? ? ? ? ?errno_t strcpy_s(char(&strDestination)[size],const char *strSource); // C++ only
例子:

#include<iostream> #include<cstring> using namespace std;void Test(void) {char *str1 = NULL;str1 = new char[20];char str[7];strcpy_s(str1, 20, "hello world");//三個參數strcpy_s(str, "hello");//兩個參數但如果:char *str=new char[7];會出錯:提示不支持兩個參數cout << "strlen(str1):" << strlen(str1) << endl << "strlen(str):" << strlen(str) << endl;printf(str1);printf("\n");cout << str << endl; }int main() {Test();return 0; }結果:

strlen(str1):11
strlen(str):5
hello world
hello
請按任意鍵繼續. . .

sptintf_s與sptintf

sprintf
定義:
int sprintf( char *buffer, const char *format [, argument] ... );
常見用法

//把整數123 打印成一個字符串保存在s 中。
sprintf(s, "%d", 123); //產生"123"
可以指定寬度,不足的左邊補空格:
sprintf(s, "%8d%8d", 123, 4567); //產生:" 123 4567"
當然也可以左對齊:
sprintf(s, "%-8d%8d", 123, 4567); //產生:"123 4567"
也可以按照16 進制打印:
sprintf(s, "%8x", 4567); //小寫16 進制,寬度占8 個位置,右對齊
sprintf(s, "%-8X", 4568); //大寫16 進制,寬度占8 個位置,左對齊


sprintf_s
int sprintf_s( char *buffer, size_t sizeOfBuffer, const char *format [, argument] ... );

#include<iostream> #include<cstring> using namespace std;int main() {char filename[1024];//需要預先分配緩沖區char path1[128] = "D:\\Program\\Tesseract-OCR\\tesseract.exe";char path2[128] = "D:\\Program\\Tesseract-OCR\\";char path3[128] = "D:\\Program\\Tesseract-OCR\\txt";char path4[128] = "-l chi_sim";sprintf_s(filename,sizeof(filename), "%s %s %s %s", path1, path2, path3, path4);cout << filename;return 0; }

strcat_s與strcat

? ? ? ? 原形:

? ? ? ? ? ? ? errno_t strcat_s(char *strDestination,size_t numberOfElements,constchar *strSource);
? ? ? ? ? ? ? ? extern char *strcat(char *dest,char *src);

strDestination要為strSource留下足夠的內存,具體為:

假設strDestination為一個數組的話,

sizeof(strDestination)>=sizeof(strSource)+strlen(strDestination);

numberOfElements=sizeof(strDestination)

舉例說明二者的區別:

char szBuf[3] = {0};
? ? ? ?strcat_s(szBuf, 3, "kdfdfj"); // 第一種連接字符串方法
? ? ? ?strcat(szBuf, "kdfdfj"); // 第二種連接字符串方法
? ? ? 對于這兩個例句,你仔細看就會發現他們有緩沖區溢出的問題.
? ? ? ? 而用第一個函數則不同,它會拋出一個異常。
? ? ? ? ?但使用第二個函數的結果則不能確定,因為它可能會錯誤地改變了程序中其他部分的內存的數據,有可能不會拋出異常,但 ? ? ? ? 會導致程序數據錯誤,也可能由于非法內存訪問拋出異常 使用規范: ??char string[20]="123"; ?strcat_s(string,sizeof(string),"456"); ?printf("%s",string);這樣20個元素,足夠裝下123456了。 注:以上三個安全函數取緩沖大小numberOfElements時,都可以取成前面那個strDestination的字節大小。 另外我們要注意strDestination到底是指針還是數組,注意二者sizeof的區別,可以混上strlen一起使用。 參考例子:《自定義String》 ?




總結

以上是生活随笔為你收集整理的strcpy_s、sptintf_s与strcat_s的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 女人又爽又黄免费女仆 | 51免费看成人啪啪片 | 国产粉嫩白浆 | 欧美成人免费视频 | www.日日日| 成人a在线观看 | 老司机精品视频网站 | 黑花全肉高h湿play短篇 | 欧美精品一二三四 | 中文字幕在线视频一区二区 | 快色视频在线观看 | 亚洲偷拍一区 | 国产成人免费网站 | 国产99久久久 | 国产一区二区三区四区精 | 欧美性成人| 欧美日韩卡一卡二 | 欧美日韩小说 | 香蕉在线网站 | 色丁香婷婷综合久久 | 乱人伦xxxx国语对白 | 美国黄色a级片 | 国产在线观看一区 | 国产一区二区视频免费观看 | 丁香花电影高清在线阅读免费 | 亚洲图片 自拍偷拍 | 黄色网页在线播放 | 亚洲色图14p | 日本一区二区在线观看视频 | 2020亚洲男人天堂 | 三级av片| 国语对白少妇spa私密按摩 | 无码人妻一区二区三区精品视频 | 影音先锋亚洲成aⅴ人在 | 阿v视频免费在线观看 | 五十路熟母 | 中国老熟妇自拍hd发布 | 大乳女喂男人吃奶视频 | 越南a级片 | 国产又粗又黄又爽的视频 | 国产又黄又湿 | 玖玖精品在线 | a∨鲁丝一区鲁丝二区鲁丝三区 | 性欧美大战久久久久久久免费观看 | 老头巨大又粗又长xxxxx | 亚洲欧美999 | 九九久久精品视频 | 国产高清sp | 麻豆久久久久久久 | 24小时日本在线www免费的 | aaaa黄色 | 青青久视频 | 国产精品一二 | 国精品人妻无码一区二区三区喝尿 | 亚洲激情欧美色图 | 91精品婷婷国产综合久久 | 国产午夜伦理 | 高清国产视频 | 日韩在线专区 | 婷婷色在线 | 国产精品午夜在线观看 | 天堂社区av | 久久精品一区二区三区不卡牛牛 | 日干夜操 | 九九成人 | 大黄网站在线观看 | 狠狠干干 | 久久不卡日韩美女 | 亚洲一区二区久久久 | 欧美777| 国产精品videos | 国产成人精品亚洲日本在线观看 | 国产无套精品 | 精品香蕉99久久久久网站 | 久久久精品中文字幕 | 日本成人激情视频 | 久久久精品小视频 | 欧美xx视频 | 激情成人av | 桃花色综合影院 | 阿v视频在线免费观看 | 性做久久久久久久免费看 | 手机电影在线观看 | 日本丰满大乳奶做爰 | 狠狠躁夜夜 | 一区二区三区四区五区在线视频 | 国产黄色三级网站 | 亚洲色图五月天 | 少妇脱了内裤让我添 | 美女亚洲一区 | 国产a免费视频 | 成人在线观看你懂的 | 无码少妇一区二区三区 | 久草视频在线资源 | 成人av免费| 亚洲小视频在线播放 | 久久久久国产精品视频 | av官网| 免费观看的av网站 |