我有一個函數可以完成一些字符串的操作,但它必須通過將原始字符串複製到char數組中來保存原始字符串,並將其全部替換爲大寫字母任何W/W爲五printf(「%s」)返回奇怪值
char* function(const char* text){
int textLength = strlen(text);
char text_copy[textLength];
for(int i = 0; i < textLength; i++){
if(text[i] == 'W' || text[i] == 'w')
text_copy[i] = 'V';
else
text_copy[i] = toupper(text[i]);
}
return 'a';
}
它並不真正的問題是什麼函數返回,但每當我試圖printf("%s\n", text_copy);
,一些字符串,它返回:
belfast: BELFAST
please: PLEASE
aardvark: AARDVARK??
hello world: HELLO VORLD
taxxxiii: TAXXXIII???
swag: SVAG?
爲什麼有些琴絃變得很好,有些琴絃不會?謝謝。
'text_copy'具有本地作用域,它不是'null-terminated',並且沒有空終止符.... ..... – LPs
問號是否出現在輸出中,或者它們是否打算標記以非預期方式處理的字符串? – Codor
@LPs將'text_copy'設置爲'textLength + 1',然後'text_copy [textLength] ='\ 0';'似乎已經解決了這個問題。謝謝! – Holsen