puts și putchar în C

puts afișează un șir și trece la rând nou, putchar afișează un singur caracter; mai simple decât printf când nu formatezi nimic.

Sintaxă
#include <stdio.h>
int puts(const char *s);
int putchar(int c);
int fputs(const char *s, FILE *stream);

Ce face puts și putchar

puts(s) scrie șirul s pe stdout și adaugă automat '\n'. Nu interpretează %, deci este sigur pentru orice text. fputs(s, stream) face același lucru într-un fișier oarecare, dar nu adaugă rând nou.

putchar(c) scrie un singur caracter. Primește un int (valoarea caracterului), așa că poți scrie putchar('A') sau putchar(65). Este echivalent cu putc(c, stdout).

Parametri

Parametru Descriere
s Șirul de afișat, terminat cu '\0'.
c Caracterul de afișat (convertit la unsigned char).
stream La fputs: fișierul în care se scrie (stdout, stderr sau un fișier deschis).

Ce returnează

puts și fputs: o valoare nenegativă la succes, EOF la eroare. putchar: caracterul scris sau EOF.

Exemple

Exemplul 1: puts adaugă rând nou, fputs nu

Cele două apeluri fputs ajung pe același rând; puts trece singur la rândul următor. Semnul % este afișat ca atare.

#include <stdio.h>

int main(void) {
    puts("Meniul zilei");
    puts("Reducere 20% la ciorbă");
    fputs("Total: ", stdout);
    fputs("45 lei\n", stdout);
    return 0;
}

Rezultat

Meniul zilei
Reducere 20% la ciorbă
Total: 45 lei

Exemplul 2: Desen din caractere cu putchar

Două bucle și putchar desenează o scară de stele. Fiecare rând se termină cu putchar('\n').

#include <stdio.h>

int main(void) {
    for (int rand = 1; rand <= 4; rand++) {
        for (int i = 0; i < rand; i++) {
            putchar('*');
        }
        putchar('\n');
    }
    return 0;
}

Rezultat

*
**
***
****

Exemplul 3: Un șir afișat literă cu literă, cu majuscule

toupper din <ctype.h> transformă fiecare literă, iar putchar o afișează. Merge pentru litere fără diacritice: o literă ca „ș” are doi octeți în UTF-8.

#include <ctype.h>
#include <stdio.h>

int main(void) {
    const char *oras = "Cluj-Napoca";
    for (int i = 0; oras[i] != '\0'; i++) {
        putchar(toupper((unsigned char)oras[i]));
    }
    putchar('\n');
    return 0;
}

Rezultat

CLUJ-NAPOCA

Greșeli frecvente

  • Scrii puts("Gata\n") și obții un rând gol în plus: puts adaugă deja '\n'.
  • Folosești fputs în loc de puts și te miri că textele se lipesc. fputs nu adaugă rând nou.
  • Treci la putchar un șir (putchar("A")) în loc de un caracter (putchar('A')). Ghilimelele duble fac un șir, apostroafele fac un caracter.

Comenzi înrudite

  • printf: Afișează text formatat pe ecran: un șablon cu specificatori (%d, %s, %.2f) completați cu valorile primite după el.
  • getchar: Citește un singur caracter de la intrarea standard; returnează EOF când intrarea s-a terminat.
  • fprintf: Scrie text formatat într-un fișier sau în stderr, cu același șablon ca printf.
  • Șiruri de caractere (char[]): În C, un șir de caractere este un tablou de char terminat cu caracterul nul ‘\0’, care marchează sfârșitul textului.
  • ctype.h (isdigit, isalpha, toupper...): Funcții care verifică ce fel de caracter ai (cifră, literă, spațiu) și care schimbă literele mari în mici și invers.