私は文字列を使っていくつかのことをする関数を持っていますが、元の文字列をchar配列にコピーして保存しなければなりません。奇妙な値を返すprintf( "%s")
belfast: BELFAST
please: PLEASE
aardvark: AARDVARK??
hello world: HELLO VORLD
taxxxiii: TAXXXIII???
swag: SVAG?
それはなぜ:任意のW/W V.
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);
にしようとするたびに関数が戻るが、しかし、それはこれを返すかは重要ではありませんいくつかの文字列はうまくいき、ある文字列はうまくいきませんありがとう。
'text_copy'はローカルスコープを持ち、ヌルターミネーションではないため、ヌルターミネータのためのスペースはありません.... – LPs
出力に疑問符が表示されるのか、期待どおりの方法で処理されている文字列をマークするには? – Codor
@LPs 'text_copy'を' textLength + 1'に設定し、 'text_copy [textLength] = '\ 0';'が問題を解決したようです。ありがとう! – Holsen