W przedstawionym kodzie problem dotyczy sposobu zapisu napisu. W C/C++ apostrofy ' ' służą do zapisu pojedynczego znaku (literał znakowy), natomiast napis (literał łańcuchowy) zapisuje się w cudzysłowie " ". Tablica char str1[30] ma przechowywać łańcuch znaków zakończony znakiem \0, więc inicjalizacja powinna wyglądać jak "Ala ma kota".
Odpowiedź "Napis powinien być ujęty w cudzysłów." jest więc poprawna, bo tylko taki zapis tworzy literał łańcuchowy pasujący do inicjalizacji tablicy znaków i do wypisania przez printf ze specyfikatorem %s.
- "Napis powinien mieć dokładnie 30 znaków." — to błędne rozumowanie: tablica może być większa niż napis. Istotne jest, aby napis zmieścił się w tablicy wraz z kończącym \0, a nie aby miał dokładnie tyle znaków co rozmiar tablicy.
- "Do funkcji printf przekazano zbyt mało argumentów." — w przykładzie przekazano format oraz jeden argument odpowiadający %s, więc liczba argumentów (na poziomie zamiaru) jest właściwa.
- "W funkcji printf nie można stosować formatowania %s" — to nieprawda: %s jest standardowym specyfikatorem do wypisywania łańcuchów znaków (ciągów char zakończonych \0).
Wskazówka egzaminacyjna: gdy widzisz '...' i więcej niż jeden znak w środku, od razu sprawdź, czy autor nie pomylił literału znaku z literałem łańcuchowym. To jeden z najczęstszych błędów na etapie podstaw składni.