PDA

Visualizza la versione completa : Problema printf %n in C


sheltem
27-09-2013, 08:35
Salve ragazzi.

Sto studiando C e ho incontrato un piccolo problemino che mi sta facendo scervellare un pò :-)

Uso l'ultima release di CodeBlocks con in bundle il compilatore MinGW.
Quando uso printf %n al posto di memorizzare il numero di caratteri stampati nella relativa variabile argomento mi stampa numeri apparentemente senza senso.

Ho cercato un pò su internet e da qualche parte ho letto he potrebbe essere un problema di compilatore. Potrebbe veramente essere ciò ? Se così fosse, mi potreste consigliare un compilatore alternativo valido ?

Grazie in anticipo a tutti e in special modo a chiunque mi possa dare un suggerimento in merito :-)

Alex'87
27-09-2013, 09:14
Cos'hai scritto?

http://stackoverflow.com/questions/3401156/what-is-the-use-of-n-format-specifier-in-c

sheltem
27-09-2013, 09:40
Ciao Alex.

Scusa se mi sono espresso male.
Provo a spiegarmi con un esempio.
Avevo già visitato quella pagina, e il codice:



#include <stdio.h>

int main()
{
int val;

printf("blah %n blah\n", &val);

printf("val = %d\n", val);

return 0;

}


Che dovrebbe stampare:

blah blah
val = 5

A me stampa:

blah blah
val = 2

Compilato con CodeBlocks e MinGW in bundle.

Non mi restituisce il valore atteso !? Why !? :dhò:

ESSE-EFFE
27-09-2013, 11:14
Prova a richiamare _set_printf_count_output(1); all'inizio del main. Altrimenti potresti dividere le printf ed utilizzare il valore di ritorno.

Alex'87
27-09-2013, 11:56
Originariamente inviato da ESSE-EFFE
Prova a richiamare _set_printf_count_output(1); all'inizio del main.

Non è una funzione specifica di Visual Studio?

sheltem
27-09-2013, 14:32
Salve Alex/ESSE-EFFE !

Alla fine ho risolto !

Proverò a utilizzare anche quanto mi suggerisci te ESSE-EFFE, nel frattempo smanettando con i compilatori, ne ho trovato uno (Digital Mars) che mi ha compilato un eseguibile che fa quello che dovrebbe !

Avevo provato anche VS Express 2010/12, ma copiando il codice mi dava una serie di errori e avvertimenti che non son stato lì nemmeno a pensarci sù e ho svuotato subito la Sandboxie e bona notte, una cosa alla volta se no :dhò:

A questo punto, nella mia poca esperienza, concluderei che sia un problema di compilatore, il MinGW sembra non digerire la printf %n.

Grazie delle risposte !

Loading