Pregunta

Nunca fwrite usada (), así que no estoy seguro exactamente lo que estoy haciendo mal. Sólo estoy probando ahora y todo lo que quiero hacer es tratar de escribir una sola carbón en un archivo hasta que se llega al final. El archivo que estoy escribiendo a es uno que he descargado desde el sitio web de mi maestro. Cuando compruebo las propiedades de la misma, el tipo solamente aparece como "archivo". Se supone que es simplemente un archivo de 2 MB vacío para que escribamos nuestro código (laboratorio de sistema de archivos si alguien está preguntando). Aquí está mi código:

#include <stdio.h>
#include <string.h>
int main()
{
    char c;
    FILE *fp;   
    char testing[2] = {'c'};  

    fp = fopen("Drive2MB", "rw"); 

    fseek(fp, 0, SEEK_SET);     //make sure pointers at beginning of file
    while((c=fgetc(fp))!=EOF)
    {
        fwrite(testing, 1, sizeof(testing), fp);
        fseek(fp, 1, SEEK_CUR);  //increment pointer 1 byte
    }
    fclose(fp);
} 

Cuando ejecuto esto, un mensaje de error aparece diciendo "depuración de aserción ... Expresión :(!" Modo de archivo no válido abierta "0) y grabados" El programa '[3896] filesystem.exe: Nativo' tiene salido con código 3 (0x3) ".

¿Fue útil?

Solución

Tiene que haber abierto el archivo para lectura (que es lo que la r significa en fopen("Drive2MB", "r");). El usuario no puede escribir en un archivo abierto para lectura.

Otros consejos

va a abrir en modo de sólo lectura

Uso r + para el fopen

fp = fopen("Drive2MB", "r")

su openning su archivo de sólo lectura

try

fp = fopen("Drive2MB", "r+"); 

que haya abierto el archivo para leer con la parte "r" de fopen. Escribir en el archivo, puede abrirlo en modo de lectura / escritura o modo de escritura.

// Read/write mode
fp = fopen("Drive2MB", "r+");

// Write only mode
fp = fopen("Drive2MB", "w");

Nunca les gusta usar "rw" personalmente. Al abrir un archivo, lo que realmente debe tener una razón para ser abierto. También no es necesario fseek llamada a ir al principio del archivo y que no es necesario el uso fseek para avanzar el puntero del archivo. fopen se abrirá automáticamente en el inicio del archivo y fwrite avanzará automáticamente el puntero. fseek sólo debe utilizarse si usted es "buscar" ing dentro del archivo para llegar a un punto específico.

En el caso de que has dado, que sería sólo necesita escribir el modo ( "w") ya que no están siempre leyendo desde el archivo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top