Strona główna › Pytania INF.03 › Pytanie 1817
INF.03 · pytanie #1817
Wskaż, na czym polega błąd w kodzie napisanym w języku C++. <pre class="code-block">char str1[30] = 'Ala ma kota'; printf("%s", str1);</pre>
- ADo funkcji printf przekazano zbyt mało argumentów.
- BNapis powinien być umieszczony w cudzysłowach.
- CNapis powinien mieć dokładnie 30 znaków.
- DW funkcji printf nie można używać formatowania %s.
Poprawna odpowiedź: B. Napis powinien być umieszczony w cudzysłowach.
Kliknij odpowiedź, którą uważasz za poprawną.
Wyjaśnienie
Wskaźnik 'str1' jest zdefiniowany jako tablica znaków, która ma przechowywać łańcuch znaków. W C++ łańcuchy znaków muszą być umieszczone w cudzysłowach, aby kompilator mógł je poprawnie zinterpretować jako dane typu string. W przypadku przypisania wartości 'Ala ma kota' bez cudzysłowów, kompilator traktuje to jako pojedynczy znak, co prowadzi do błędu. Aby poprawnie zainicjować tablicę 'str1', należy użyć: char str1[30] = "Ala ma kota";. Taki zapis jest zgodny z regułami C++ i zapewnia, że napis zostanie potraktowany jako łańcuch znaków. Ponadto, dobrym zwyczajem jest zapewnienie, że tablica ma wystarczającą ilość miejsca na znak null ('\0'), który oznacza koniec łańcucha, co w tym przypadku jest zapewnione przez zdefiniowanie tablicy o rozmiarze 30. Warto również pamiętać, że stosowanie cudzysłowów zamiast apostrofów dla łańcuchów znaków jest podstawową zasadą programowania w C++.
🤖 Wyjaśnienie generowane przez AI – weryfikuj w oficjalnych źródłach.