2015-01-06 16 views
13

Qual è la dimensione massima che può essere stampata usando %s in linguaggio c.La dimensione massima della stringa può essere stampata usando% s?

Stavo cercando di stampare un buffer nel file usando fprintf ma a un certo punto ho sentito che sarebbe andato più a 320 KB. E fprintf stava scrivendo una stringa troncata nel file. C'è qualche limite con %s?

+1

Non c'è limite, si dovrebbe verificare che la stringa è una stringa c valida. Invia un po 'di codice per favore, potrebbe essere che possiamo aiutare a individuare il problema. –

+1

Immagino che in qualsiasi implementazione di 'printf', passi semplicemente attraverso la stringa puntata e mandi un carattere alla volta sul puntatore' FILE' designato, finché non incontra il carattere null. Detto questo, dubito che lo standard in linguaggio C specifichi come 'printf' dovrebbe essere implementato. –

risposta

6

printf() ha un limite superiore. Gestirà con successo fino a N char s. N è almeno 4095.

Il numero di caratteri che può essere prodotto da un singolo conversione deve essere almeno 4095. C11dr §7.21.6.1 15


[Edit ]

Con un'uscita prevista di tale dimensione (320 kB), se possibile, considerare l'utilizzo di fputs(s, stream) anziché di fprintf(stream, "%s", s); che non presenta questa limitazione 4095.

Simile a printf/fprintf maximum size according to c99

+3

* È stato gestito correttamente fino a N char * cosa significa? – ouah

+0

@chux Puoi commentare qualsiasi limite pratico per qualsiasi compilatore specifico? GCC? MSVC? – Degustaf

+0

@Degustaf Non ho familiarità con i limiti del compilatore GCC, MSVC. – chux

Problemi correlati