char配列と印刷を終了しようとします。文字列の終わりを '\ 0'で終了したい。これは意図したガーベジの値から離れた配列を出力します。私は、アレイ、ゴミ値の、具体的指標を終了しようとすると、私は数の文字列のバイナリ表現を作っていその後
しかし、それは私の文字列を出力しません。
int main(void)
{
char s[8] = {0};
printing_binary(s, 8, 2);
}
void printing_binary(char *s, int length, unsigned n){
for(int i = 0; i < length; i++){
if(1 & (n >> i)){
s[i] = '1';
}
else{
s[i] = '0';
}
}
//Trying to terminate my string
//s[length] = '\0';
printf(s);
}
このコードは、01000000}
のようなものを出力します。
は、しかし、私はs[length] = '\0'
をコメント解除した場合、それは/プログラムの実行が停止し、何も出力しません。私はすべての後に "Hello world"を印刷しようとしました。
使用S [長さ-1] =「\ 0」に到達する前に、ループの外に役立ちます。 – Daniel
'sの[長さ]'としても、それは未定義の動作である読取...配列の範囲外です。最後の要素は 's [length-1]'です。 – StoryTeller