C 中sprintf和string的使用問題

2021-08-08 02:20:02 字數 830 閱讀 7590

關於string在sprintf中格式化的問題,用一段**來說明問題:

string str1 = "string1";

string str2 = "string2";

string str3 = "string3";

char ch[50];

memset(ch, '\0', sizeof ch);

sprintf(ch, "str1 = %s, str2 = %s, str3 = %s", str1, str2, str3);

cout

《在vs2010中編譯,結果出現下面異常:

cplusplus.exe 中的 0x0fdf14cf (msvcr100d.dll) 處有未經處理的異常: 0xc0000005: 讀取位置 0x69727473 時發生訪問衝突。

經過除錯,發現出錯語句為 sprintf處,但是不知道是**有問題。一直以來都是這樣使用cstring類的,所以以為string類也是一樣的可以如此使用,string類直接匹配%s。最後發現,必須要使用string類中的成員變數去賦值才行,所以應該按如下修改:

string str1 = "string1";

string str2 = "string2";

string str3 = "string3";

char ch[50];

memset(ch, '\0', sizeof ch);

sprintf(ch, "str1 = %s, str2 = %s, str3 = %s", str1.c_str(), str2.c_str(), str3.c_str());

cout

《如此修改後,執行結果正常。

strcpy,strlen函式和string原型

編寫strcpy函式 已知strcpy函式的原型是char strcpy char strdest,const char strsrc 其中strdest是目的字串,strsrc是源字串。1 不呼叫c c的字串庫函式,請編寫函式 strcpy 2 strcpy能把strsrc的內容複製到strdes...

C 中sprintf 函式應用

c 中sprintf 函式應用 在將各種型別的資料構造成字串時,雖然現在c 的字串可以實現字元轉換 to string 和連線 但是利用sprintf 的強大功能可以事辦功倍。sprintf在合理指定引數後,它能將你需要的內容一次性列印到指定的字串中,從而被大量應用。1.函式原型 sprintf 是...

static, const關鍵字和String類

1 函式體內static變數的作用範圍為該函式體,不同於auto變數,該變數的記憶體只被分配一次 初始化一次 因此其值在下次呼叫時仍維持上次的值 2 在模組內的static全域性變數可以被模組內所用函式訪問,但不能被模組外其它函式訪問 3 在模組內的static函式只可被這一模組內的其它函式呼叫,這...