KWALIFIKACJA INF2 + INF3 - CZERWIEC 2009

PYTANIE NR 8.
W języku ANSI C łańcuch wprowadza się za pomocą specyfikatora
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
%s jest specyfikatorem formatu używanym do obsługi łańcucha znaków (napisu) w funkcjach wejścia/wyjścia formatującego, np. scanf i printf. Pozostałe opcje dotyczą innych typów: %c pojedynczego znaku, %d liczby całkowitej, a %l nie jest samodzielnym specyfikatorem łańcucha.

Pełne wyjaśnienie:

W języku C "łańcuch znaków" (string) jest reprezentowany najczęściej jako tablica znaków zakończona znakiem NUL (\0). Gdy korzysta się z funkcji formatujących wejście/wyjście, takich jak scanf (wczytywanie) i printf (wypisywanie), trzeba dobrać specyfikator formatu zgodny z typem danych.

Poprawny specyfikator dla łańcucha to %s. Oznacza on "ciąg znaków" i jest używany do pracy z napisem (np. wczytania do tablicy char lub wypisania zawartości takiej tablicy).

Dlaczego pozostałe odpowiedzi są błędne?

  • %c dotyczy pojedynczego znaku (typowo char). To częsta pułapka: znak to tylko jeden symbol, a łańcuch to wiele znaków zakończonych \0.
  • %d służy do liczb całkowitych typu int. Nie ma zastosowania do danych tekstowych.
  • %l samo w sobie nie jest specyfikatorem łańcucha; w praktyce bywa elementem zapisu z modyfikatorem długości (np. w połączeniu z innymi literami specyfikatora). Wybranie go jako samodzielnej odpowiedzi wskazuje na mylenie modyfikatorów i specyfikatorów.

Wskazówka egzaminacyjna: warto zapamiętać minimalny zestaw mapowań typ → format: int → %d, char → %c, string/char[] → %s. To pozwala szybko eliminować odpowiedzi niezgodne z typem danych.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
%s oznacza łańcuch znaków (napis). W praktyce współpracuje z tablicą typu char[] zakończoną znakiem \0. Używa się go m.in. w scanf do wczytania napisu oraz w printf do wypisania napisu.
%c obsługuje pojedynczy znak (zwykle char), a %s obsługuje cały łańcuch znaków (tablicę char z zakończeniem \0). Mylenie tych specyfikatorów to częsty błąd na testach.
%d jest przeznaczone dla liczb całkowitych typu int. Łańcuch znaków to dane tekstowe (tablica znaków), więc wymaga konwersji napisowej, czyli %s. Użycie %d przy tekście prowadzi do błędnej interpretacji danych.
W scanf używa się %s, gdy chcesz wczytać od użytkownika słowo (ciąg znaków bez spacji) do tablicy char. Trzeba pamiętać o zapewnieniu wystarczającego rozmiaru bufora, bo zbyt długi napis może spowodować problemy z pamięcią.
Napis w C to kolejne znaki w tablicy, a na końcu zawsze występuje znak NUL \0, który oznacza koniec łańcucha. Funkcje operujące na napisach (w tym konwersja %s) wykorzystują ten znacznik, aby wiedzieć, gdzie napis się kończy.
Nie. Samo %l nie oznacza łańcucha znaków. Litera l bywa modyfikatorem długości używanym razem z innymi specyfikatorami, ale nie zastępuje %s. Dlatego w pytaniu o łańcuch poprawna jest odpowiedź %s.
Najczęściej myli się %c z %s (znak vs napis) oraz stosuje %d do danych niebędących liczbą. Częsty jest też błąd "na wygląd" — wybór losowego zapisu z literą, która kojarzy się z typem, bez sprawdzenia definicji konwersji.
Opanuj tabelę podstawowych mapowań: int%d, char%c, char[] (napis) → %s. Potem przećwicz krótkie zadania: dobieranie formatu do typu, rozpoznawanie błędów oraz przewidywanie, co program wypisze.
%s najczęściej łączy się z buforem znakowym, czyli tablicą char (np. char nazwa[50]). W praktyce to "miejsce" na napis. W kontekście wypisywania może też odnosić się do wskaźnika na pierwszy znak napisu (np. wskaźnik do tablicy znaków).
Prawidłowe specyfikatory wpływają na poprawność wejścia/wyjścia, diagnostykę i bezpieczeństwo. Zły format może dać błędne wyniki, nieczytelne logi albo nawet problemy z pamięcią. Dlatego umiejętność dobrania %s do tekstu i innych formatów do liczb/znaków jest kluczowa.
info

Statystycznie 81% uczniów zna prawidłową odpowiedź. średnio łatwe

W praktyce zawodowej kluczowe jest to, że %s jest specyfikatorem formatu używanym do obsługi łańcucha znaków (napisu) w funkcjach wejścia/wyjścia formatującego, np. scanf i printf.

Źródła:

  • cppreference.com: "scanf" — opis konwersji %s, https://en.cppreference.com/w/c/io/fscanf (dostęp: 2026-02-27)
  • cppreference.com: "printf" — opis konwersji %s, https://en.cppreference.com/w/c/io/fprintf (dostęp: 2026-02-27)
  • Kernighan, Ritchie, "The C Programming Language" (2nd Edition), rozdziały o wejściu/wyjściu i specyfikatorach formatu (printf/scanf)

Materiały:

  • Dokumentacja funkcji scanf/printf i specyfikatorów formatu (tabele konwersji)
  • Podręczniki wprowadzające do języka C (rozdziały o wejściu/wyjściu i łańcuchach)
  • Ćwiczenia: mapowanie typów (int/char/string) na właściwe specyfikatory i testy w małych programach

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego