2009-09-03 5 views
-1

Comment fonctionne fprintf?Comment fonctionne fprintf en C++?

Si j'écris fprintf(outfile, "test %d %d 255/r", 255, 255);

Qu'est-ce que cela signifie? Je sais que outfile est le nom de mon fichier de sortie. Que signifieraient les autres valeurs?

+5

Vous devriez également remettre en question vos connaissances sur le premier paramètre. "outfile" dans ** pas ** le * nom * de votre fichier de sortie. – innaM

+6

C'est un peu triste, le premier résultat d'une recherche Google "fprintf" vous aurait tout dit à ce sujet. – DaClown

+7

C'est vrai, mais maintenant * cette * discussion a une chance d'apparaître dans Google pour la prochaine personne. Prenez ce froncement de sourcils et retournez-le. –

Répondre

6

"test %d %d 255/r" dit qu'après cela sera arguments (et ils sont là: 255, 255) et ils sont censés être de type entier. Et ils seront placés à la place de% d.

En résultat, vous obtiendrez la chaîne test 255 255 255 dans votre fichier.

Pour plus d'infrormation, lire std::fprintf reference.

1

Il est similaire à printf, il imprime simplement la sortie dans un fichier.

3

Le premier paramètre est un handle de fichier, le second est une chaîne de formatage, et après cela, il existe un nombre variable d'arguments en fonction du nombre de spécificateurs de format que vous avez utilisés dans votre second paramètre.

Vérifiez le documentation, il contient toutes les informations que vous demandez.

1

Le deuxième argument est la chaîne de format. Tous les arguments supplémentaires sont les paramètres du spécificateur dans la chaîne de format (dans ce cas,% d). Découvrez http://www.cppreference.com/wiki/c/io/printf pour une bonne introduction aux fonctions de style printf.

3

C'est une sortie formatée vers un flux de fichier. Il fonctionne comme printf fait, la différence est que printf émet toujours de vous stdout.If écrit

fprintf(stdout, "test %d %d 255\n", 255, 255); 

ce serait la même chose que l'équivalent printf.

Le deuxième argument est la chaîne de format. La chaîne de format contient des spécificateurs de format, tels que %s, %d, %x. Le vôtre contient deux %d s. Chaque spécificateur de format doit avoir un argument correspondant dans fprintf. Vôtre a deux %d spécificateurs, donc il y a deux arguments numériques:

fprintf(outfile, "Here are two numbers: %d, %d", 4, 5); 

De même, vous pouvez utiliser spécificateurs à cordes (%s), spécificateurs hexadécimaux (%x) ou long/long long spécificateurs int (%ld, %lld). Voici une liste d'entre eux: http://www.cppreference.com/wiki/c/io/printf. Notez qu'ils sont identiques pour toutes les fonctions d'E/S au format C (comme sprintf et scanf).

De même, dans votre exemple original, "/r" imprimera littéralement "/r". Il semble que vous essayiez de faire un retour chariot ("\r").

Questions connexes