Stampa testo formattato in C

Jinku Hu 12 ottobre 2023
  1. Usa la funzione printf con l’identificatore %s per stampare le stringhe
  2. Usa la funzione printf con specificatore %i per stampare numeri interi
Stampa testo formattato in C

Questo articolo introdurrà diversi metodi su come stampare il testo formattato sulla console in C.

Usa la funzione printf con l’identificatore %s per stampare le stringhe

La funzione printf è una delle parti più utilizzate della libreria standard di input/output. In realtà, esiste un’intera famiglia di funzioni printf specializzate per più scenari, tutti documentati in dettaglio in questa pagina. In questo articolo, mostriamo solo l’output formattato utilizzando la funzione printf.

printf è unico in quanto può richiedere un numero variabile di argomenti. Vale a dire, i parametri della funzione possono essere divisi in due parti, la stringa di formato e altri argomenti. La stringa di formato specifica la parte di formattazione della funzione e include caratteri ordinari e specificatori che iniziano con il simbolo %. Le forme più semplici sono dimostrate nel seguente esempio, dove printf prende la stringa stessa come unico argomento nella prima chiamata, e la seconda chiamata dichiara un singolo specificatore %s nella stringa di formato seguito dall’argomento della variabile stringa.

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

int main(void) {
  const char* str1 = "fabulae mirabiles";

  printf("String literal\n");
  printf("%s\n", str1);

  exit(EXIT_SUCCESS);
}

Produzione:

String literal
fabulae mirabiles

Un’altra caratteristica utile della stringa di formato è specificare quanti caratteri visualizzare dall’argomento della stringa passato alla funzione. Il codice di esempio successivo mostra due soluzioni a questo problema.

Il primo inserisce il numero intero che denota il numero di caratteri tra i simboli % e s; quindi, solo 6 caratteri vengono stampati dall’argomento stringa specificato. La seconda chiamata printf inserisce invece il carattere * e consente all’utente di passare il valore integrale da uno degli argomenti. Il lato positivo di quest’ultimo metodo è che il valore può essere calcolato in fase di esecuzione, mentre il primo metodo richiede che il valore sia hardcoded. Si noti che, in entrambi i casi, il carattere . dopo il simbolo % è necessario.

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

int main(void) {
  const char* str1 = "fabulae mirabiles";

  printf("%.6s\n", str1);
  printf("%.*s \n", 6, str1);

  exit(EXIT_SUCCESS);
}

Produzione:

fabula
fabula

Usa la funzione printf con specificatore %i per stampare numeri interi

printf può stampare numeri interi con diverse rappresentazioni. I metodi comuni includono la modifica della base in cui vengono visualizzati i numeri interi. Gli argomenti interi possono essere indicati con l’identificatore specificatore %i o %d. I numeri positivi e negativi vengono formattati automaticamente, tranne per il fatto che i numeri positivi non vengono visualizzati con il segno più e possono essere inclusi con l’identificatore esplicito %+i. I numeri esadecimali e ottali possono essere emessi con gli specificatori %x e %o. L’identificatore specificatore %X mostra numeri esadecimali con formattazione in maiuscolo.

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

int main(void) {
  printf("%i %d %.6i %+i %i\n", 11, 22, 12, 41, -31);
  printf("%.4x %x %X %#x\n", 126, 125, 125, 100);
  printf("%.4o %o\n", 8, 11);

  exit(EXIT_SUCCESS);
}

Produzione:

11 22 000012 +41 -31
007e 7d 7D 0x64
0010 13
Autore: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Articolo correlato - C IO