日韩性视频-久久久蜜桃-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的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 成人在线网 | 色婷婷狠狠 | 五月天久久久久久 | 日本不卡视频在线 | 97久久精品人人澡人人爽 | www一级片 | 日本aa视频 | 久久精品男人 | 国产一级黄| 四川丰满少妇被弄到高潮 | 亚欧美| 日韩美女少妇 | 婷婷色网站 | 欧美精品免费看 | 男女猛烈无遮挡 | 欧美图片一区二区三区 | 91狠狠| 少妇aaaaa| 日本黄色播放器 | 国产精品一区三区 | 国产三级精品三级在线 | 中文字幕精品久久久 | 波多野结衣中文一区 | 超碰成人久久 | avtt2015| 久久人人人 | 日日爱666 | 美女福利在线视频 | 成品人视频ww入口 | 在线综合网 | 日韩精品免费在线 | 俄罗斯黄色大片 | 91视频色版| 麻豆精品国产传媒av绿帽社 | 天天干视频 | av网址观看| 一区二区精品免费 | 青青超碰| 久久久性色精品国产免费观看 | 国产人成无码视频在线观看 | 69热在线观看 | 色综合天天综合网天天看片 | 亚洲成人免费在线视频 | 色婷婷香蕉在线一区二区 | 自拍亚洲综合 | 亚洲伦理自拍 | 高清欧美精品xxxxx在线看 | 国产jizz18女人高潮 | 五月婷婷丁香六月 | 毛片av免费看 | 久久久久九九九九 | 久久99久久98精品免观看软件 | 国产精品色在线 | 欧美一区二区性久久久 | 国产男女猛烈无遮挡免费视频动漫 | 国产中文字幕一区 | 真实的国产乱xxxx在线91 | 青青草视频免费观看 | 健身教练巨大粗爽gay视频 | 中文字幕日韩经典 | 99国产精品久久久 | 一区二区国产在线 | 一道本久久 | 国产日韩欧美综合在线 | 欧美日韩国产精品成人 | 亚洲成a人片77777kkkk | 国产精品一级片 | 精品国产一区二区三区av性色 | 成人午夜影视在线观看 | 欧美久久精品一级黑人c片 1000部多毛熟女毛茸茸 | 一区二区三区免费在线观看 | 久久亚洲影视 | 国产三级av在线播放 | 在线视频日韩精品 | 亚洲深夜福利视频 | 欧美性猛交久久久久 | 亚洲av日韩av永久无码下载 | 国产精品宾馆在线精品酒店 | 成人试看120秒体验区 | videos亚洲| 黑人毛片网站 | jizz视频| 爱爱色图 | 日本国产在线观看 | 超碰人人艹| 欧美一区二区在线视频观看 | 五月婷婷av| 日本欧美一区二区三区不卡视频 | 超碰av免费 | 国产一区二区免费看 | 国产精品亚洲一区二区 | 四虎国产精品免费 | 成人aaa视频 | 狂野少女电影在线观看国语版免费 | 美女一区二区三区四区 | 亚洲一区二区三区综合 | 最近中文字幕无免费 | 国产成人在线观看免费网站 | 色吧av色av |