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

getchar i putchar w języku C

Object Storage Arubacloud
0 głosów
445 wizyt
pytanie zadane 18 listopada 2022 w C i C++ przez natalia2002. Początkujący (400 p.)

Witam mam pytanie odnośnie funkcji getchar i putchar. Na czym dokładnie polegają i kiedy się je stosuje? Czytałam o tym na wielu stronach, ale dalej nie jestem w stanie zrozumieć, bo dopiero zaczynam uczyć się programowania. Zrozumiałam to tak, że getchar działa tak jak scanf, a putchar tak jak printf. Mam też podany taki kod i nie bardzo rozumiem, jak wpisuję liczby z klawiatury to program w zależności od liczb wpisuje mi rózne liczby z przedziału od 48 do 57, a jak wcisnę tylko enter to wyświetla mi 10, dlaczego tak się dzieje? I dlaczego wpisujemy tam %i a nie %d, skoro to liczba całkowita?

#include<stdio.h>

int main()
{
    int i;
    i = getchar();
    printf("Przeczytano znak o numerze %i.", i);

    return 0;
}

 

2
komentarz 18 listopada 2022 przez Oscar Nałogowiec (29,320 p.)
edycja 18 listopada 2022 przez Oscar

48 to kod ASCII cyfry '0', a 57 cyfry '9'.

getchar po prostu wczytuje 1 znak i zwraca jego kod (w C char to też typ liczbowy).

W miejsce %i można użyć %d, bo bez różnicy.

A różnice z printf/scanf? Po prostu putchar/getchar to są funkcje proste takie elementarne. Te ze stringiem formatującym to już są funkcje zlożone (jak na język C oczywiście), być może one nawet w środku korzystają z tych funkcji prostych. Nie ma większego sensu wypisywanie pojedynczych znaków używając printf. Cały komunikatów o treści zawierającej zmienne fragmenty - tak, jak najbardziej. Równie bez sensu jest pisanie własnegto odpowiednika funkcji printf (aczkolwiek jest to możliwe).

komentarz 18 listopada 2022 przez VBService Ekspert (253,340 p.)
edycja 18 listopada 2022 przez VBService

BTW, bardziej precyzyjny komunikat był by np.

printf("Przeczytano znak o numerze ascii %i.", i);

 

1 odpowiedź

0 głosów
odpowiedź 18 listopada 2022 przez VBService Ekspert (253,340 p.)

Do tego opisu co podał @Oscar; i do tego

 Czytałam o tym na wielu stronach

może ten przykład pomoże Tobie

[ on-line ]

#include <stdio.h>
#include <string.h>
  
int main()
{
    char text1[] = "Lorem ipsum\n";
     for (int i=0; i<strlen(text1); i++) {
        putchar(text1[i]);
    }
    printf("%s", text1);
    
    
    char ch = 'F';
    char text2[] = "Zmienna ch zawiera litere: ";
    
    // putchar
    for (int i=0; i<strlen(text2); i++) {
        putchar(text2[i]);
    }
    putchar(ch);
    putchar('\n'); // new line
    // printf
    printf("Zmienna ch zawiera litere: %c\n", ch);
    
    printf("%s%c - kod ascii: %d, %i", text2, ch, ch, ch);
    

    printf("\n\n");
    
 
    char s[5]; 
    // scanf
    printf("[scanf] Wpisz slowo: pasja\n");
    scanf("%s", s);
    
    // Clearing The Input Buffer In C/C++
    // https://www.geeksforgeeks.org/clearing-the-input-buffer-in-cc/
    while ((getchar()) != '\n');
    
    // getchar
    printf("[getchar] Wpisz ponownie slowo: pasja\n");
    char g = getchar();
    
    printf("\n");
    printf("[scanf]: %s\n", s);
    printf("[getchar]: %c", g);
    
    return 0;
}

Podobne pytania

0 głosów
0 odpowiedzi 391 wizyt
pytanie zadane 2 lipca 2019 w C i C++ przez Przemek49 Obywatel (1,260 p.)
0 głosów
1 odpowiedź 314 wizyt
pytanie zadane 3 kwietnia 2020 w C i C++ przez ResCrove Obywatel (1,700 p.)
+5 głosów
7 odpowiedzi 1,085 wizyt
pytanie zadane 15 kwietnia 2015 w C i C++ przez RedRevenge Obywatel (1,230 p.)

92,575 zapytań

141,424 odpowiedzi

319,650 komentarzy

61,961 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...