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

Funkcja fgets C

0 głosów
320 wizyt
pytanie zadane 8 września 2022 w C i C++ przez benny13 Obywatel (1,150 p.)

  Cześć, mam problem z zadaniem z języka C. Czemu w poniższej funkcji funkcja fgets pobiera więcej niż 19     znaków? Jak działa ten program? Z góry dzięki :)

Plik tekstowy „tekst.txt” zawiera następujące dane (cztery wiersze i wiersz pusty jako piąty):

komputer
Lublin
biurko
widowisko

 

Funkcja f zdefiniowana została następująco:

void f(char *str){
static int x = 0;
x += strlen(str)-1;
printf("%d\n", x);
}

Podaj wartości, które wyświetlą się na ekranie po wykonaniu następującego fragmentu programu. Zachowaj format wydruku. Zakładamy, że plik jest otwartym strumieniem plikowym w trybie do odczytu pliku „tekst.txt”. Przyjąć, że podczas wykonywania operacji na plikach nie wystąpią żadne błędy, a potrzebne pliki nagłówkowe są dołączone do programu.

char tab[20];
while(fgets(tab, 19, plik)!= NULL){
if (tab[0] < 'p')
f(tab);
fputs(tab, stdout);
}

 

1
komentarz 8 września 2022 przez Oscar Nałogowiec (29,360 p.)
Chyba chodzi o to, że zmienna x w tej funkcji jest statyczna, czyli zerowana jest raz, przy kolejnych wywołaniach funkcji dodaje sobie długości (strlen() - 1) kolejnych napisów.

Wypisywane są coraz większe liczby.
komentarz 8 września 2022 przez benny13 Obywatel (1,150 p.)
Dzięki :)

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 1,003 wizyt
0 głosów
1 odpowiedź 2,225 wizyt
pytanie zadane 28 marca 2017 w C i C++ przez Kamil Duljas Użytkownik (990 p.)
0 głosów
2 odpowiedzi 1,072 wizyt
pytanie zadane 29 listopada 2017 w C i C++ przez Krystek102 Bywalec (2,440 p.)

93,731 zapytań

142,669 odpowiedzi

323,286 komentarzy

63,291 pasjonatów

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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...