Come posso stampare una stringa con terminazione non nulla usando printf?

Come posso stampare una stringa con terminazione non nulla usando printf?


Come posso stampare una stringa con terminazione non nulla utilizzando printf, supponendo di conoscere la lunghezza della stringa in fase di esecuzione?


Risposte:


printf("%.*s", length, string);

Usa insieme ad altri argomenti:


printf("integer=%d, string=%.*s, number=%f", integer, length, string, number);
// ^^^^ ^^^^^^^^^^^^^^


In C puoi specificare la lunghezza massima per l'output con il %.123s formato. Ciò significa che la lunghezza dell'output è al massimo 123 caratteri. Il 123 potrebbe essere sostituito da * , in modo che la lunghezza venga presa dall'argomento di printf anziché codificata.


Nota che questo presuppone il string non contiene alcun byte null interno (\0), come %.123s vincola solo il massimo lunghezza non esatta length e le stringhe vengono comunque trattate come con terminazione null.


Se si desidera stampare una stringa con terminazione non nulla con null interno, non è possibile utilizzare un singolo printf. Usa fwrite invece:


fwrite(string, 1, length, stdout);

Vedi la risposta di @MSDousti per una spiegazione dettagliata.