Ten sposób działa, tylko w C tak naprawdę nie ma żadnych stringów, ani żadnych typów danych, są tylko konwencje. Konwencja dla stringa jest taka, że to ciąg bajtów począwszy od jakiegoś adresu w pamięci, a skończywszy na adresie pod którym jest zero. Jeśli zero jest zaraz pod adresem początkowym, to łańcuch jest pusty. Jeśli zera tam nie wpisałeś, to są tam przypadkowe dane, ciesz się że nie zadziałało, bo mogło u Ciebie zadziałać, a na egzaminie - nie.
Pozdrawiam