Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

Invoer en uitvoer in C programmeren: Volledige gids

Standaard I/O-streams

C behandelt alle apparaten als bestanden. Drie standaard streams open automatisch:

StreamBestandspointerApparaat
Standaard invoerstdinToetsenbord
Standaard uitvoerstdoutScherm
Standaard foutstderrScherm (apart van stdout)

Karakter I/O: getchar() en putchar()

  • int getchar(void) – leest één karakter, retourneert int (voor EOF detectie)
  • int putchar(int c) – schrijft één karakter
int c;
printf("Voer een karakter in: ");
c = getchar();
printf("Je 타이pte: ");
putchar(c);

Regel I/O: gets() en puts()

Let op: gets() is verouderd en gevaarlijk (geen grenscontrole → buffer overflow). Gebruik fgets().

char str[100];
fgets(str, sizeof(str), stdin);  // leest regel incl. \n
str[strcspn(str, "\n")] = '\0';  // verwijder newline
puts(str);  // print met newline

Geformatteerde I/O: scanf() en printf()

Meest gebruikte functies. Werken met formaatstring en variabele argumentenlijst.

printf formaatspecifiers

Modifiers: %10d (breedte), %.2f (precisie), %-10s (links uitlijnen), %05d (null-padding).

scanf specifics

  • Adressen doorgeven: &var (behalve arrays/strings)
  • Stopt bij whitespace voor %s, %c
  • Retourneert aantal succesvol gelezen items (of EOF)
  • %[^\n] leest hele regel (tot newline)

Voorbeeld

#include <stdio.h>

int main() {
    char naam[50];
    int leeftijd;
    float lengte;

    printf("Naam: ");
    scanf("%49[^\n]", naam);  // max 49 chars, tot newline
    getchar();  // consume newline

    printf("Leeftijd: ");
    scanf("%d", &leeftijd);

    printf("Lengte (m): ");
    scanf("%f", &lengte);

    printf("\n--- Profiel ---\n");
    printf("Naam: %s\n", naam);
    printf("Leeftijd: %d jaar\n", leeftijd);
    printf("Lengte: %.2f m\n", lengte);

    return 0;
}

Best practices

  • Controleer altijd retourwaarde van scanf
  • Gebruik breedtelimieten bij %s (%49s)
  • Vergelijk stdin buffer na scanf (rest newline)
  • Voor robuuste invoer: lees regel met fgets, parse met sscanf
  • stderr voor foutmeldingen (kan apart omgeleid worden)

C Taal

  1. C# Keywords en Identifiers begrijpen: Regels, lijsten en best practices
  2. C# Fundamentals: Invoer en Uitvoer Basis
  3. C# Classes & Objects: Fundamenten voor Robuuste OOP
  4. C++ input en output: een praktische gids
  5. C Input en Output (I/O) Beheersen: scanf() en printf() Uitgelegd
  6. C++ Streams Beheersen: cout, cin, cerr, clog – Praktische Handleiding
  7. C-constanten en literals: Types, gebruik en best practices
  8. C# Constanten & Literals Beheersen: Typen, Regels en Best Practices
  9. D Latches Onder de Knie: Ontwerp, Werking en Belangrijke Verschillen
  10. Python I/O en Module Imports onder de knie krijgen: Een praktische gids
  11. Java Input & Output beheersen: printen, lezen en formatteren
SpecifierType
%d, %iSigned int
%uUnsigned int
%ldLong
%lldLong long
%cKarakter
%sString (char*)
%fFloat/Double
%lfDouble (scanf)
%pPointer (void*)
%%Letterlijk %