Estoy tratando de hacer un programa para abrir un archivo que se llama «write.txt».

#include <stdio.h>

main() {
    FILE *fp;
    fp = fopen("write.txt", "w");
    return 0;
 }

Debe este trabajo? Porque no devuelve nada.

Devuelve nada porque usted tiene un return 0; como la última instrucción? O ¿quiere usted decir que fopen() devuelve cero?
¿qué se puede esperar a que vuelva? ¿Qué significa volver, imprimir?
Lo siento, me refiero a fopen devuelve nada.
No se puede «devolver nada». Exactamente lo que hace que se devuelva en su caso?
Lo siento. Me trastoca mis palabras. Me refería a un archivo no se crea o se abre.

OriginalEl autor | 2011-02-16

4 Comentarios

  1. 13

    Otro que un viejo variante de main, realmente no hay mucho mal con ese código. Debe, salvo errores, crear el archivo.

    Sin embargo, desde que no estás leyendo el valor de retorno de fopen, usted puede obtener un error de algún tipo, y no saber que es.

    Me gustaría empezar con:

    #include <stdio.h>
    #include <errno.h>
    int main (void) {
        FILE *fp;
        fp = fopen ("write.txt","w");
        if (fp == NULL) {
            printf ("File not created okay, errno = %d\n", errno);
            return 1;
        }
        //fprintf (fp, "Hello, there.\n"); //if you want something in the file.
        fclose (fp);
        printf ("File created okay\n");
        return 0;
    }

    Si estás decidida a que el archivo no se ha creado, pero el código de arriba dice que es, entonces usted puede ser una víctima de la temida «IDE está trabajando en un directorio diferente de lo que usted piensa» síndrome de down 🙂

    Algunos Ide (Visual Studio) se ejecute el código, mientras que están en un directorio como <solution-name>\bin o <solution-name>\debug. Usted puede encontrar poniendo:

    system ("cd"); //for Windows
    system ("pwd") //for UNIXy systems

    a tu código para ver donde se está ejecutando. Que donde un archivo será creado si especifica una ruta de acceso relativa de la línea de "write.txt". De lo contrario, puede especificar una ruta de acceso absoluta para asegurarse de que se intenta crear en un punto específico en el sistema de archivos.

    Creo que las funciones declaradas sin tipo de retorno se supone que devolver un int en las versiones anteriores del lenguaje C. Esto es no true para C++; la principal función de se requiere devolver un int.
    Creo que usted encontrará en C99 adelante que usted debe devolver un int explícitamente. C89/90 permitió a los valores predeterminados.
    Es una buena idea para cerrar los archivos abiertos; es aceptable dejar heredado archivos (como la entrada estándar y la salida estándar abierto en la salida.
    Sería mejor utilizar perror("File not created ok"); de la printf(), ya que se debe imprimir un legible por el usuario por error en vez de un inescrutable número de error.
    Sí, puedo estar de acuerdo, se será mejor que. Asimismo, no tiene nada que ver con la cuestión de por sí 🙂 Creo que era tan solo un código de soporte.

    OriginalEl autor paxdiablo

  2. 2

    Lo hizo de esperar a que ‘volver’ – se abre un archivo, en la mayoría de las plataformas de creación de uno si no existe.

    Probablemente debería fclose(fp) en el archivo al final.

    OriginalEl autor Martin Beckett

  3. 2

    Creo desea imprimir el contenido del archivo write.txt. (Suponga que contiene caracteres).

    #include <stdio.h>
    
    int main()
    {             
    
        FILE *fp,char ch;
    
        fp=fopen("write.txt","r");
    
        if(fp==NULL)
        {
            printf("Some problem in opening the file");
            exit(0);
        } 
        else
        { 
            while((ch=fgetc(fp))!=EOF)
            {
                printf("%c",ch);
            }
        }
    
        fclose(fp);
    
        return 0;  
    }
    Se abre el archivo para escritura, no de la lectura. También, su printf no incluye el valor por lo que no sé porque el open failed. Uso strerror o perror.

    OriginalEl autor Algorithmist

  4. 0

    Creo que se debe estudiar algunos de los más fundamentales en C antes de empezar a tratar de trabajar con los archivos. Un retorno significa que algunos datos se pasa el código de llamada de la función llamada.En este caso se devuelven 0 en el final de su programa. Usted no hizo nada con su puntero de ARCHIVO, salvo causa un nuevo archivo que se crea…

    Yo sé. He destrozado mi pregunta. Pero lo que me refería era a que no hay ningún archivo fue abierto/creado. Estoy tratando de seguir K&R p160-161.
    Bien, si usted desea aprender C, K&R es el lugar para comenzar.
    K&R es un horrible herramienta para el aprendizaje de C, que estaría mejor con algo un poco más moderno.

    OriginalEl autor in70x

Dejar respuesta

Please enter your comment!
Please enter your name here