實際上,我有一個看起來像這樣的字串。"1,22,333,,55555,666666,7777777"
從這個字串中,我創建了兩個陣列:
。
- 一個是每個引數的大小。對于給定的例子,它看起來像這樣。
[1;2;3;0;5;6;7]。
- 第二個是參考每個引數的開頭的指標。 對于給定的例子,它看起來像這樣:
["1,22,333,,5555,6666,777777";
"22,333,,55555,666666,7777777";
"333,,55555,666666,7777777";
",55555,666666,7777777";
"55555,666666,7777777";
"666666,7777777";
"7777777"]
引數的長度和型別可以改變,但順序不能改變。 所以我想用型別轉換來存盤這些引數
。我已經測驗了sscanf指標陣列的每個索引,但它似乎不起作用
char* format = strcat(strcat("%"/span>, params_sizes[0], "u")。)
strutest.un = sscanf(params_pointer[0], format) 。
你有什么辦法可以幫助我嗎?
uj5u.com熱心網友回復:
這一行
char* format = strcat(strcat("%"/span>, params_sizes[0]), "u")。)
是錯誤的。
strcat的原型是
char *strcat(char *restrict dest, const char *restrict src)。
其中dest是目的地,即(一個指向)存盤串聯字串的物件的指標。
所以看一下你的代碼:
strcat("%"/span>, params_sizes[0]
^^^
目的地!!!
你正試圖將結果存盤在一個字串字面。這是不可能的(在未定義的行為中修改一個字串字面)。
你需要這樣的東西:
char format[1024] = "%"; //sufficiently big char array that can be modified>
strcat(strcat(format, params_sizes[0]), "u"/span>)。
BTW:也可以考慮用sprintf代替嵌套的strcat
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/329589.html
標籤:
