Domanda

In alcuni codici che devo mantenere, ho visto un identificatore di formato % * s . Qualcuno può dirmi di cosa si tratta e perché viene utilizzato?

Un esempio del suo utilizzo è come:

fprintf(outFile, "\n%*s", indent, "");
È stato utile?

Soluzione

Viene utilizzato per specificare, in modo dinamico, la larghezza del campo :

  
      
  • La larghezza non è specificata nella stringa di formato, ma come ulteriore   argomento valore intero che precede il   argomento che deve essere formattato.
  •   

così " trattino " specifica lo spazio da allocare per la stringa che lo segue nell'elenco dei parametri.

printf("%*s", 5, "");

è uguale a

printf("%5s", "");

È un bel modo per mettere degli spazi nel tuo file, evitando un ciclo.

Altri suggerimenti

Non utilizzare "% * s " su un buffer che non è terminato NULL (impacchettato) pensando che stamperà solo "lunghezza" campo.

http://www.cplusplus.com/reference/clibrary/cstdio/ printf /

  

La larghezza non è specificata nella stringa di formato, ma come argomento di valore intero aggiuntivo che precede l'argomento che deve essere formattato.

ad es. printf ("% * s " ;, 4, myValue); è equivalente a printf ("% 4s " ;, myValue); .

L'identificatore di formato% 4s genera una stringa in una larghezza di campo di 4, ovvero printf visualizza il valore con almeno 4 posizioni di carattere.

Se il valore da emettere è minore di 4 posizioni di carattere, il valore è giustificato correttamente nel campo per impostazione predefinita.

Se il valore è maggiore di 4 posizioni di carattere in larghezza, la larghezza del campo si espande per contenere il numero appropriato di caratteri.

A sinistra per giustificare il valore, utilizzare un numero intero negativo per specificare la larghezza del campo.

Riferimenti: Java ™ How To Program (Early Oggetti), decima edizione

* Fa sì che fprintf riempia l'output fino a quando non ha una larghezza di n caratteri, dove n è un valore intero memorizzato nell'argomento della funzione appena precedente a quello rappresentato dal tipo modificato.

printf("%*d", 5, 10) //will result in "10" being printed with a width of 5.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top