2010-02-09 8 views
5

No es posible hacer algo como fputs(4, fptOut); porque a los resultados no les gustan los enteros. ¿Cómo puedo solucionar esto?Escribir un entero en un archivo con fputs()

Hacer fputs("4", fptOut); no es una opción porque estoy trabajando con un valor de contador.

Respuesta

12

¿Qué hay de

fprintf(fptOut, "%d", yourCounter); // yourCounter of type int in this case 

Documentación de fprintf se puede encontrar here.

+0

Funciona muy bien, gracias. – Pieter

4
fprintf(fptOut, "%d", counter); 
4

Las respuestas proporcionadas son correctas. Sin embargo, si intentas usar fputs, primero puedes convertir tu número en una cadena usando sprintf. Algo como esto:

#include <stdio.h> 
#include <stdint.h> 

int main(int argc, char **argv){ 
    uint32_t counter = 4; 
    char buffer[16] = {0}; 
    FILE * fptOut = 0; 

    /* ... code to open your file goes here ... */ 

    sprintf(buffer, "%d", counter); 
    fputs(buffer, fptOut); 

    return 0; 
} 
1

Sé 6 años demasiado tarde, pero si realmente quería utilizar fputs

char buf[12], *p = buf + 11; 
*p = 0; 
for (; n; n /= 10) 
    *--p = n % 10 + '0'; 
fputs(p, fptOut); 

también deben tener en cuenta que esto es para fines educativos, usted debe pegarse con fprintf.

+0

[¿Para qué sirve el '48'?] (Https://en.wikipedia.org/wiki/EBCDIC#Codepage_layout) –

+0

@Andrew Henle 48 es el código decimal ASCII para el dígito 0. Esto convierte el dígito en su forma ASCII . 48 se agrega a cada dígito internamente cuando se usa 'printf ("% d ")' –

+0

¿Por qué asumen ciegamente ASCII? No hizo clic en el enlace que proporcioné, ¿verdad? –

Cuestiones relacionadas