Strona główna › Pytania INF.03 › Pytanie 1634
INF.03 · pytanie #1634
<pre class="code-block">char str1[30] = 'Ala ma kota'; printf("%s", str1);</pre> Wskaż, gdzie tkwi błąd w powyższym kodzie napisanym w języku C++?
- ADo funkcji printf przekazano za mało argumentów.
- BTekst powinien mieć dokładnie 30 znaków.
- CTekst powinien być zawarty w cudzysłowie.
- DW funkcji printf nie można używać formatowania %s.
Poprawna odpowiedź: C. Tekst powinien być zawarty w cudzysłowie.
Kliknij odpowiedź, którą uważasz za poprawną.
Wyjaśnienie
Odpowiedź jest poprawna, ponieważ w języku C i C++, napisy muszą być ujęte w podwójne cudzysłowy, aby kompilator mógł je rozpoznać jako literały znakowe. W kodzie, który przedstawiono, użyto pojedynczych cudzysłowów, co jest niezgodne z regułami składniowymi tych języków. Poprawna definicja napisu powinna wyglądać następująco: char str1[30] = \"Ala ma kota\"; Ujęcie napisu w cudzysłowy pozwala na poprawne zainicjowanie tablicy typu char, co jest standardową praktyką w programowaniu w C/C++. Dzięki temu kompilator wie, że wszystkie znaki zawarte w cudzysłowie stanowią część jednego ciągu. Warto również zauważyć, że przy pracy z napisami w C, często używa się funkcji standardowych, takich jak strlen do obliczania długości napisu czy strcpy do kopiowania ciągów. Te funkcje są szeroko stosowane w praktyce i znajomość ich działania jest kluczowa dla efektywnego programowania. "
🤖 Wyjaśnienie generowane przez AI – weryfikuj w oficjalnych źródłach.