• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Imiona (tablice jednowymiarowe tekstowe)

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
1,118 wizyt
pytanie zadane 16 listopada 2019 w C i C++ przez Hubertius Bywalec (2,970 p.)

Siema:

Zadanie z Dante nosi taką treść:

"

Napisz program, który pyta użytkownika o jego imię, a następnie wyświetla tekst powitalny

Witaj (...)!

gdzie zamiast (...) program wyświetla pobrane imię. Załóż, że długość imienia nie przekroczy 30 znaków. "

Rozpisałem kod:

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) 
{
   char imie[30];
   printf("Podaj imie:");
   	scanf("%s",imie);
   printf("Witaj %s!",imie);

	return 0;
}

I wysłałem do sprawdzenia na stronie Dante. Oto co się odwaliło:

"

Błąd: Wartość wyświetlona przez program jest błędna; powinno być Witaj NzTqXNGqVyxdyvqZrdJrIDUfjLTbMF!

Ostrzeżenie: Wykryto problemy podczas analizy statycznej programu

"

Widok konsoli programu -- przebieg interakcji z użytkownikiem:

Podaj imie:NzTqXNGqVyxdyvqZrdJrIDUfjLTbMFQcUCJYdUV⏎
Witaj NzTqXNGqVyxdyvqZrdJrIDUfjLTbMFQcUCJYdUV!

Program zakończony; kod błędu=0 (Ok)

Test został przerwany; Wartość wyświetlona przez program jest błędna; powinno być Witaj NzTqXNGqVyxdyvqZrdJrIDUfjLTbMF!

 

Czyli odczytało cały wyraz, i to pomimo przekroczenia możliej ilości elementów  w tablicy... pytanie tylko co mogę zrobić z tym fantem. Jak to ograniczyć, żeby wypisywanie imienia w funkcji printf kończyło się na elemencie tablicy o indeksie 29?

 

Poradzicie?   :/

 

 

1 odpowiedź

0 głosów
odpowiedź 16 listopada 2019 przez Michałełe Nałogowiec (25,600 p.)
wybrane 17 listopada 2019 przez Hubertius
 
Najlepsza

Witam

Zmień scanf na

scanf("%30s",imie);

 

komentarz 16 listopada 2019 przez Hubertius Bywalec (2,970 p.)
Działa, Dante mi kazał jedynie zmienić na %29 (no bo w sumie ta tablica tekstowa ma indeksy od 0 do 29).W każdym razie dzięki za pomoc.  :)
komentarz 16 listopada 2019 przez Hubertius Bywalec (2,970 p.)
Tak się jeszcze spytam, bo w sumie jednak nie do końca rozumiem łańcuch formatujący %c.

Jak to działa? Dlaczego przy zadeklarowaniu %30 wyskakiwał komunikat, że mogę dać char imie[29] (osobiście zostawiłem %30s, a dałem imie[31]. W tym momencie zadanie zaliczyło mi bez zastrzeżeń.

Podobne pytania

0 głosów
0 odpowiedzi 996 wizyt
pytanie zadane 16 listopada 2019 w C i C++ przez Hubertius Bywalec (2,970 p.)
0 głosów
1 odpowiedź 2,583 wizyt
pytanie zadane 18 listopada 2019 w C i C++ przez Hubertius Bywalec (2,970 p.)
+2 głosów
0 odpowiedzi 780 wizyt
pytanie zadane 27 lutego 2019 w Nasze projekty przez Eminiox Obywatel (1,500 p.)

93,187 zapytań

142,203 odpowiedzi

322,021 komentarzy

62,513 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2365p. - dia-Chann
  2. 2326p. - Łukasz Piwowar
  3. 2315p. - Łukasz Eckert
  4. 2301p. - CC PL
  5. 2269p. - Tomasz Bielak
  6. 2235p. - Łukasz Siedlecki
  7. 2232p. - rucin93
  8. 2169p. - Marcin Putra
  9. 2164p. - Adrian Wieprzkowicz
  10. 2006p. - Michal Drewniak
  11. 1950p. - Anonim 3619784
  12. 1909p. - Dawid128
  13. 1901p. - Mikbac
  14. 1744p. - rafalszastok
  15. 1487p. - Michał Telesz
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...