Tengo que escribir a un archivo de la siguiente manera:

 A
 B
 C
 D
 ...

Cada uno de los caracteres del alfabeto debe ser por escrito a la otra línea en el archivo. Tengo el siguiente programa que escribe caracteres, uno después de otro:

 FILE* fp;
 fp = fopen("file1","a+");
 int i;
 char ch= 'A';
 for(i=0; i<26; i++){
     fwrite(&ch, sizeof(char), 1, fp);
     ch++;
 }
 fclose(fp);

¿Cómo debo cambiar el programa anterior para escribir cada carácter en una línea nueva. (He tratado de escribir «\n» después de cada carácter, pero cuando voy a ver el archivo con el editor VI o ghex herramienta, veo caracteres adicionales; estoy buscando una manera para que el editor vi se muestran archivo exactamente como se muestra arriba).

He intentado utilizar la siguiente después de la primera fwrite:

 fwrite("\n", sizeof("\n"), 1, fp);

Gracias.

  • Al escribir «\n» después de cada carácter, lo hiciste otra fwrite o algo más?
  • Podrías mostrar el código modificado que escribe \ns? Era algo así como la fwrite("\n", sizeof(char), 1, fp);?..
  • He editado el ques.
  • ¿Hay alguna razón por la que usted necesita para utilizar fwrite? fwrite está pensado para los datos binarios, y escribir el texto que suele utilizar fprintf y putc.
InformationsquelleAutor Jake | 2012-04-21

2 Comentarios

  1. 9
    fwrite("\n", sizeof("\n"), 1, fp);

    debe ser

    fwrite("\n", sizeof(char), 1, fp);

    De lo contrario, usted está escribiendo un extra de \0 que se parte de cero-la terminación de su "\n" constante de cadena (sizeof("\n") es de dos, no de uno).

    • Gracias, recuerden que !
  2. 2

    Lo «caracteres adicionales» ¿ves? Te das cuenta de que la "a+" parámetro para fopen abre el archivo para adjuntar, por lo que está escrito al final del archivo. ¿Tal vez significa "w+", que sobrescribirá el archivo?

    Puede utilizar:

    fputc((int)ch, fp);
    fputc((int)'\n', fp);

    O incluso fprintf(fp, "%c\n", ch);

Dejar respuesta

Please enter your comment!
Please enter your name here