Dlaczego printf
drukuje spację zamiast zatrzymywać się, gdy używam znaku NULL z tabeli ASCII? To, co mam na myśli:Przepuszczanie pustego bajtu za pomocą specyfikatora formatu w `printf`
printf("Hello%c, world", 0); //Hello , world
printf("Hello%c, world", '\0'); //Hello , world
Dopiero kiedy mogę umieścić znak ucieczki w samym ciąg printf
zatrzymuje łańcuch:
printf("Hello\0, world"); //Hello
Próbowałem to na Windows 8, Windows 10 (przy użyciu Cygwin MinGW , Netbeans, Code :: Blocks), XUbuntu, to wszystko to samo.
Gdzie jest problem? Poprosiłem jednego z moich przyjaciół, ale powiedział, że nie ma takiego problemu, że wszystkie trzy przykłady zostały wykonane w ten sam sposób.
Dlaczego uważasz, że pierwsze 2 powinny wydrukować tylko Hello? [C++ example] (http://coliru.stacked-crooked.com/a/1d7e28cf27e49f71) – rozina
Ponieważ 0 jest liczbą terminatorów NULL/zero w tabeli ASCII, a jej odpowiednikiem jest "\ 0". –
@rozina, ponieważ ''\ 0'' jest znakiem kończącym zero? –