Perché lo printf
stampa uno spazio invece di arrestarsi quando utilizzo il carattere NULL dalla tabella ASCII? Questo è ciò che intendo:Passare byte nullo tramite identificatore di formato in `printf`
printf("Hello%c, world", 0); //Hello , world
printf("Hello%c, world", '\0'); //Hello , world
Solo quando ho messo il carattere di escape nella stringa stessa printf
interrompe la stringa:
printf("Hello\0, world"); //Hello
Ho provato questo su Windows 8, Windows 10 (usando Cygwin, MinGW , Netbeans, Code :: Blocks), XUbuntu, è lo stesso.
Dov'è il problema? Ho chiesto a uno dei miei amici, ma ha detto che non ha alcun problema, che tutti e tre gli esempi sono stati eseguiti allo stesso modo.
Perché pensi che il primo 2 debba stampare solo Ciao? [esempio C++] (http://coliru.stacked-crooked.com/a/1d7e28cf27e49f71) – rozina
Perché, 0 è il numero del terminatore NULL/zero nella tabella ASCII e il suo equivalente carattere di escape è '\ 0'. –
@rozina, perché ''\ 0'' è il carattere terminatore null? –