字串系列函式 不斷跟新

2021-09-06 15:38:52 字數 1242 閱讀 7460

1.sprintf,sprintf_s

sprintf(char* buffer, const char* format, [argument]);

vs下需要加上_crt_secure_no_warnings

#include using

namespace

std;

intmain()

這個貌似是典型的緩衝區溢位,程式崩潰,賦值超出了name的記憶體範圍

sprintf_s是sprintf的安全版本,編譯器都推薦使用這個

#include using

namespace

std;

intmain()

這個指定了緩衝區是1個位元組大小,而將大於1位元組大小的賦值到緩衝區中馬上報錯

而sprintf_s(name, 20,"%d", input);錯誤的將緩衝區的大小調到20,同樣會造成記憶體溢位。所以要正確的指定緩衝區大小

#include using

namespace

std;

intmain()

同樣會報錯

任何企圖將格式字串輸出小於本身長度的緩衝區中都會報錯。

2.strcpy,strncpy,strcpy_s

char* strcpy(char* dest, const char* src);

把以null字元結束的dest字元複製到dest指向的記憶體中,返回指向dest的指標

str與dest記憶體不能重疊且dest有足夠的記憶體來存放stc的內容

#include using

namespace

std;

intmain()

會報錯,因為dest的記憶體太小了

strncpy

char* strncpy(char* dest, char* src, int num);

如何提前遇到\0,則剩餘的不全\0

#include using

namespace

std;

intmain()

會不全\0

errno_t strcpy_s(char *strdestination, size_t numberofelements, const char *strsource );

這個也是指定緩衝區長度的複製方法

Sql Server系列 字串函式

字串函式用於對字元和二進位制字串進行各種操作,大多數字串函式只能作用於char nchar varchar和nvarchar資料型別。字串函式可以用在select或者where語句中。1.ascii 函式 ascii character expression 函式作用於返回字串表示式中最左側字元的a...

SQL系列函式 字串函式

1.charindex函式用來尋找乙個指定的字元 串 在另乙個字串中的起始位置,返回乙個整數,沒找到就返回0.select charindex sql microsoft sql server 返回結果為11 2.len返回字串的長度 select len microsoft sql server ...

字串「最」系列

最近練手,整理了乙個 最 系列的主題,這些題目有點繞,個別的還有別名 詳見博文 混在一塊比較亂,就索性放在一起做了個整理,區別的時候要注意子串行與子串的不同,前者不要求連續,後者要求連續 由於大部分跟dp有關,而且一些題目還可以漸進尋求多種解法,可以用來做不錯的練手。下面是這些問題的博文目錄 1 最...