C 中字串中的 0 當作有效字元處理方法

2021-09-25 11:47:01 字數 750 閱讀 7738

在自動配置odbc資料來源時,sqlconfigdatasource的第四個引數需要傳入乙個字串,字串中包含了多個值,中間必須有"\0"分隔開,也就是說傳入的字串中間含有「\0」。直接使用字串常量是沒有問題的,但是一般的需求是不固定路徑,也就是通過傳入變數的方式來配置資料來源。

比如說:char str=「dsn=myaccess\0 dbq=」+filepath;

乍一看沒問題,其實你使用的時候你就會發現,\0表示結束,此時讀取的str為:str=「dsn=myaccess」+filepath; "\0 dbq=「不見了。之後你會想到使用轉義字元,char str=「dsn=myaccess\\0 dbq=」+filepath,你輸出str,螢幕顯示的確實是"dsn=myaccess\0 dbq=」+filepath,但是當你把str作為實參傳入的時候,str又等於str=「dsn=myaccess\0 dbq=」+filepath,問題還沒解決。

最後使用memcpy函式解決了這一問題。

memcpy(void *dest, void *src, unsigned int count);

功能:由src所指記憶體區域複製count個位元組到dest所指記憶體區域。

char strcc[256] = 「dsn=myaccess\0 dbq=」;//共18個字元,所以第乙個引數+18

memcpy(strcc + 18, filename, filename.length());

此時的strcc中的字串就含有\0。

2020秋招筆試 有效字串

輸入一串字串,只包含 這六種字元,現要判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。示例 輸入 輸出 true false true 用棧解決即可,遍歷字串,每次遇到左括號就入棧,遇到右括號則出棧到棧頂彈出對應的左括號 當最終遍歷完成後,若棧不為空,...

去掉char 字串前面空格 C 中字串的處理

tolower 把字串轉換為小寫,不會改變原字串,將建立乙個新的字串。toupper 把字串轉換為大寫,不會改變原字串,將建立乙個新的字串。trim 去除字串前後的空格,可以指定char陣列.trimstart 去除字串前面的空格.trimend 去除字串後面的空格.trim mychars 去除字...

關於字串中的 0

首先需要知道一點,c語言在定義變數時在記憶體裡是按照位址遞減的方式分配空間的。那麼開始解釋乙個問題。char s 3 printf s s 那麼再嘗試一下列印s 4 的值,會發現s 4 的值為0,那麼也就可以解釋為什麼上述 可以正確執行了。但是這種方式是存在問題的,比如我給出這樣的 char s1 ...