CursosEmpresasBlogLiveConfPrecios

Escritura y lectura de archivos

Clase 26 de 27 • Curso de Programación Estructurada

Clase anteriorSiguiente clase

Contenido del curso

Introducción

  • 1
    Qué aprenderás sobre la programación estructurada

    Qué aprenderás sobre la programación estructurada

    00:44 min

Conceptos básicos

  • 2
    Set up de codeblocks y compilador

    Set up de codeblocks y compilador

    02:59 min
  • 3
    Variables y tipos de datos (Asignación y clasificación)

    Variables y tipos de datos (Asignación y clasificación)

    12:10 min
  • 4
    Entrada y salida de datos

    Entrada y salida de datos

    21:55 min
  • 5
    Operadores aritméticos

    Operadores aritméticos

    09:57 min
  • 6
    Operadores de asignación, de incremento y decremento

    Operadores de asignación, de incremento y decremento

    17:48 min
  • 7

    Recapitulación: Conceptos Básicos

    02:02 min

Control de flujo

  • 8
    Condicional if e if - else

    Condicional if e if - else

    18:35 min
  • 9
    Operadores relacionales y lógicos

    Operadores relacionales y lógicos

    13:25 min
  • 10
    Switch

    Switch

    08:27 min
  • 11
    ¿Qué es un iterador? - Ciclo While

    ¿Qué es un iterador? - Ciclo While

    05:54 min
  • 12
    Ciclo For

    Ciclo For

    08:43 min
  • 13
    Ciclo Do-While

    Ciclo Do-While

    05:53 min
  • 14
    Arreglos unidimensionales

    Arreglos unidimensionales

    13:35 min
  • 15
    Arreglos bidimensionales

    Arreglos bidimensionales

    12:36 min
  • 16
    Arreglos e iteradores unidimensionales

    Arreglos e iteradores unidimensionales

    08:52 min
  • 17
    Arreglos e iteradores bidimensionales

    Arreglos e iteradores bidimensionales

    08:47 min
  • 18
    Cadena de caracteres (string)

    Cadena de caracteres (string)

    06:51 min
  • 19

    Recapitulación: Control de Flujo

    04:49 min

Funciones

  • 20
    Funciones: Divide y vencerás

    Funciones: Divide y vencerás

    13:53 min
  • 21
    Variables locales y globales

    Variables locales y globales

    10:14 min
  • 22

    Recapitulación: Funciones

    01:39 min

Conceptos avanzados

  • 23
    Recursividad

    Recursividad

    10:10 min
  • 24
    Apuntadores

    Apuntadores

    06:53 min
  • 25
    Struct y manejo de archivos

    Struct y manejo de archivos

    13:00 min
  • 26
    Escritura y lectura de archivos

    Escritura y lectura de archivos

    Viendo ahora
  • 27
    Manejo de librerías

    Manejo de librerías

    14:56 min
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads
      Usuario anónimo

      Usuario anónimo

      user•
      hace 6 años
        Mario Enrique Ascencio Garcia

        Mario Enrique Ascencio Garcia

        student•
        hace 5 años
        Juan Fernando Ramirez Montes

        Juan Fernando Ramirez Montes

        student•
        hace 4 años
      Sebastian Castañeda Garcia

      Sebastian Castañeda Garcia

      student•
      hace 5 años
        Diana Yazmin

        Diana Yazmin

        student•
        hace 5 años
        Maria Isabel Torres Torres

        Maria Isabel Torres Torres

        student•
        hace 5 años
      Efraín Hernández García

      Efraín Hernández García

      student•
      hace 6 años
        Eduardo Jose Escalante Matallana

        Eduardo Jose Escalante Matallana

        student•
        hace 5 años
        Bryan Calvetty

        Bryan Calvetty

        student•
        hace 5 años
      H NA

      H NA

      student•
      hace 7 años
      Merlyn Rodriguez

      Merlyn Rodriguez

      student•
      hace 6 años
      Jose Carlos Borrayo

      Jose Carlos Borrayo

      student•
      hace 4 años
        Alexander Rojas

        Alexander Rojas

        student•
        hace 4 años
      Mateo Aquino

      Mateo Aquino

      student•
      hace 6 años
        Jose Antonio Padron Fernandez

        Jose Antonio Padron Fernandez

        student•
        hace 6 años
      Soe Lucas

      Soe Lucas

      student•
      hace 4 años
        Victor Sanchez

        Victor Sanchez

        student•
        hace 3 años
      Carlos Lopez

      Carlos Lopez

      student•
      hace 4 años
      Carlos Lopez

      Carlos Lopez

      student•
      hace 4 años
      valentina stephany kassar acuña

      valentina stephany kassar acuña

      student•
      hace 4 años
      valentina stephany kassar acuña

      valentina stephany kassar acuña

      student•
      hace 4 años
      Job Forero

      Job Forero

      student•
      hace 6 años
      Manuel Alejandro Aguilar Téllez Girón

      Manuel Alejandro Aguilar Téllez Girón

      student•
      hace 7 años
      Cristian Camilo Cortes Ortiz

      Cristian Camilo Cortes Ortiz

      student•
      hace 4 años
        Javi Felices

        Javi Felices

        student•
        hace 4 años
        Cristian Camilo Cortes Ortiz

        Cristian Camilo Cortes Ortiz

        student•
        hace 4 años
      Mateo León Camacho

      Mateo León Camacho

      student•
      hace 4 años
        Javi Felices

        Javi Felices

        student•
        hace 4 años
        Mateo León Camacho

        Mateo León Camacho

        student•
        hace 4 años
      Carlos Gabriel de Jesus Gonzalez Tabares

      Carlos Gabriel de Jesus Gonzalez Tabares

      student•
      hace 5 años
        Massimo Di Berardino

        Massimo Di Berardino

        student•
        hace 5 años
        Luis Franco

        Luis Franco

        student•
        hace 5 años
      Osvaldo Garcia

      Osvaldo Garcia

      student•
      hace 5 años
        Helí Fernando Jerez Rincón

        Helí Fernando Jerez Rincón

        student•
        hace 5 años
      Santiago Cardoso

      Santiago Cardoso

      student•
      hace 6 años
        Jaime Ortiz

        Jaime Ortiz

        student•
        hace 6 años
      Yefri Enmanuel Encarnación Jiménez

      Yefri Enmanuel Encarnación Jiménez

      student•
      hace 5 años
        Mauricio Galvez

        Mauricio Galvez

        student•
        hace 5 años

      Este codigo lo hice para crear un archivo .bat que escribe numeros al azar de color verde, dando un efecto de matrix :D

      #include <stdio.h> #include <stdlib.h> int main() { FILE *archivo; archivo = fopen("files.bat", "w"); char code[500] = "@echo off\npause\ncolor 0a\nmode 1000\n:a\necho %random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%\ngoto a"; if(archivo != NULL){ fflush(stdin); fwrite(&code, sizeof(code),1,archivo); fclose(archivo); } return 0; }```

      Muy bueno.

      Se ve super

      Como complemento de la clase me gustaría recomendarles estos tres tutoriales que explican los modos básicos en que podemos crear, escribir, leer y append información a un texto. Usando funciones como fprintf, fgets, foef, etc. Siento que es un poco más sencillo de esta forma Writing files Reading files Appending files

      Me encantó ese canal. Muchas gracias <3

      Gracias

      En el curso de Terminal y Linea de comandos explican más a fondo esto!

      ¿Nos podrías decir en que parte, por favor?

      gracias ^^

      Como queda el código de ambos escenarios (escribir y leer):

      #include<stdio.h> struct personalData { char name[20]; char lastName[20]; int age; }; int main(){ printf("Archivos - Guardar en un archivo!\n"); //Creamos una estructura llamada 'person' de tipo 'personalData' struct personalData person; //Creamos un archivo FILE *archivo; //Abrimos el archivo creado y le ponemos un nombre seguido le indicamos si lo vamos a escribir o a leer. //archivo = fopen("DatosPersonales001.dat","wb"); //Para escribir archivo = fopen("DatosPersonales001.dat","rb"); //Para leer if(archivo != NULL){ //PARA ESCRIBIR EL ARCHIVO /* fflush(stdin); //Limpiamos el buffer para evitar basura printf("Leer los datos:\n"); printf("Ingresar nombre:\n"); gets(person.name); printf("Ingresar apellido\n"); gets(person.lastName); printf("Ingresar edad\n"); scanf("%i", &person.age); printf("Imprimir datos: \n"); printf("%s\n", person.name); printf("%s\n", person.lastName); printf("%i\n", person.age); fwrite(&person, sizeof(person), 1, archivo); */ //PARA LEER EL ARCHIVO fread(&person, sizeof(person), 1, archivo); printf("Imprimir los datos \n"); printf("Nombre: %s\n", person.name); printf("Nombre: %s\n", person.lastName); printf("Nombre: %i\n", person.age); fclose(archivo); } else { printf("No se ha podido crear el archivo"); } }

      dos puntos por terminar de ver el video :v

      Este código incluye los dos ejemplos de guardar y leer datos de un archivo en un mismo script.

      #include <stdio.h> #include <stdlib.h> struct personalData{ char name[20]; char lastName[20]; int age; }; void crearArchivo(){ struct personalData person; FILE *archivo; archivo = fopen("DatosPersonales001.dat","wb"); if(archivo != NULL){ fflush(stdin); printf("Guardar datos: \n"); printf("Ingresar nombre: \n"); gets(person.name); printf("Ingresar apellido: \n"); gets(person.lastName); printf("Ingresar edad: \n"); scanf("%d",&person.age); fwrite(&person,sizeof(person),1,archivo); fclose(archivo); }else{ printf("No se ha podido crear el archivo.\n"); } } void leerArchivo(){ struct personalData person; FILE *archivo; archivo = fopen("DatosPersonales001.dat","rb"); if(archivo != NULL){ fread(&person,sizeof(person),1,archivo); printf("Imprimir los datos: \n"); printf("Nombre: %s \n",person.name); printf("Apellido: %s \n",person.lastName); printf("Edad: %i\n\n",person.age); fclose(archivo); }else{ printf("No se ha podido crear el archivo.\n"); } } int main() { while(1){ crearArchivo(); leerArchivo(); } return 0; }

      Gracias por compartir ^^

      ¿De esta manera tan simple trabaja un virus sobrescribiendo archivos y borrando informacion?

      Existen muchos más tipos de virus informáticos ;)

      aca te dejo lo mas comunes: https://smarterworkspaces.kyocera.es/blog/8-tipos-virus-informaticos-debes-conocer/

      Hay alguna razón para que la 'f' tenga un protagonismo que hace parte de muchos comandos de C como prefijos o sufijo. O acaso se trata simplemente de 'file'?

      se trata simplemente de acortar las palabras "fuction" o "file"

      Code Blocks - Practica de escritura

      Code Blocks practica - leer archivo

      Para leer se puede utilizar la función fread.

      Para escribir necesitamos utilizar la función fwrite y en ella vamos a usar cuatro parámetros.

      • El primero, es el apuntador con la dirección de la información que estamos guardando.

      • El segundo, el tamaño de cada elemento que será escrito.

      • El tercero, el número de elementos.

      • El cuarto, el apuntador con la dirección al archivo donde estamos guardando/escribiendo.

      Para leer también se cuenta con cuatro parámetros:

      • El primero, el apuntador con la dirección de la información que estamos leyendo.

      • El segundo, el tamaño de cada elemento que será leído.

      • El tercero, número de elementos.

      • El cuarto, el apuntador con la dirección al archivo donde estamos leyendo.

      Screenshot_1_misDatos_.png

      Escribiendo el archivo:

      1 #include <stdio.h> 2 3 struct PersonalData { 4 char first_name[20]; 5 char last_name[20]; 6 int age; 7 }; 8 9 int main(){ 10 struct PersonalData me; 11 12 FILE *archive; 13 archive = fopen("Datos_personales.dat", "wb"); 14 15 if(archive != NULL){ 16 fflush(stdin); 17 printf("Ingresa tu nombre\n"); 18 gets(me.first_name); 19 printf("Ingresa tu apellido\n"); 20 gets(me.last_name); 21 printf("Ingresa tu edad:\n"); 22 scanf("%i", &me.age); 23 24 printf("Hola %s %s\n", me.first_name, me.last_name); 25 printf("Tienes %i primaveras cumplidas\n", me.age); 26 27 fwrite(&me, sizeof(me), 1, archive); 28 //fwrite(puntero_de_que, el_tamano_de_lo_que_escribes, cuantos_escribes, el_archivo_que_escribes); 29 fclose(archive); 30 }else{ 31 printf("El archivo no se creo\n"); 32 } 33 }

      Leyendo el archivo:

      1 #include <stdio.h> 2 3 struct PersonalData{ 4 char first_name[20]; 5 char last_name[20]; 6 int age; 7 }; 8 9 int main(){ 10 struct PersonalData me; 11 12 FILE *archive; 13 archive = fopen("Datos_personales.dat", "rb"); 14 15 if(archive != NULL){ 16 fread(&me, sizeof(me), 1, archive); 17 printf("Hola %s %s\n", me.first_name, me.last_name); 18 printf("Tienes %i primaveras cumplidas\n", me.age); 19 fclose(archive); 20 }else{ 21 printf("El archivo no se abre :(\n"); 22 } 23 }

      Hola comunidad! alguien sabe ¿como puedo ejecutar un archivo .c desde la terminal con shell zsh? gracias

      En este tutorial viene cómo hacerlo para Windows, lo he probado en Windows 10 x64, uso Git Bash con oh-my-posh y sin problema.   Un saludo.

      Gracias! bro

      Hola a todos. Tengo un problema recurrente con mi código. Ya puedo crear el archivo, guardar información en él y leerlo. Pero en struct hay una variable int (numPags), que cuando uso fread(), titulo y variable las imprime bien, pero numPags siempre me imprime 32759 o 32758. No importa qué valores tenga mi struct original, cuando creo un nuevo struct y le digo que lea los valores del anterior, numPags nunca es igual. Mi código:

      #include <stdio.h> #include <stdlib.h> struct Libro { char titulo[30]; char autor[30]; int numPags; }; int main() { struct Libro libro; FILE *archivo; archivo = fopen("data1.txt", "w"); if (archivo != NULL) { fflush(stdin); printf("Ingrese el titulo:\n"); gets(libro.titulo); printf("Ingrese el autor:\n"); gets(libro.autor); printf("Ingrese # de pags:\n"); scanf("%d", &libro.numPags); fwrite(&libro, sizeof(libro), 1, archivo); fclose(archivo); } else { printf("No se pudo abrir el archivo!"); } struct Libro libro1; archivo = fopen("data1.txt", "r"); if (archivo != NULL) { printf("Datos del segundo libro:\n"); fread(&libro1, sizeof(libro1), 1, archivo); printf("%s\n", libro1.titulo); printf("%s\n", libro1.autor); printf("%i\n", libro1.numPags); fclose(archivo); } else { printf("No se pudo abrir el archivo creado!"); } return 0; }

      Gracias

      Buenas peña.   Por fin he podido replicar tu ejercicio, y no veo nada raro, al contrario, el resultado es correcto. Te comparto el repl del mismo, para que lo revises.   Incluso creo otro fichero, y leo después el anterior, y me pone los datos que había.   Un saludo.

      Al final, el error estaba siendo causado porque en la línea de

      archivo = fopen("data1.bat", "rb");

      Tenía que poner rb

      Gracias :)

      No entiendo la condicion, archivo != NULL. Esto se debe a que si un archivo antes de crearlo es NULL pero al evaluarlo con la condición igual entra, porque? Alguien sabe?

      Hola @elunico567, por lo que entendí de tu consulta y lo que vi en la clase, te comento el if(archivo != NULL) es para asegurarse que antes de escribir el archivo, este existe y se pudo abrir de manera correcta, es una especia de manejo de errores

      Puede que este mensaje ya no les sirva porque ya saben que es lo que significa, pero respondere por si alguien mas lo lee... Cuando nosotros declaramos un objeto pero no lo inicializamos, este por lo general esta vacio, eso es lo que significa NULL, entonces la instruccion if(archivo != NULL) lo que esta verificando es que el puntero "archivo" contenga algo dentro de el, y no solo sea un contenedor vacio. Si "archivo" no tuviera nada dentro de el, la condicion seria falsa y pasaria al "else".

      que pasa si quiero escribir texto sin ayuda de un struct? se puede?

      Claro, el struct es solo un concepto para organizar la variables y también la memoria

      No me sale para ingresar los datos, que estoy haciendo mal?

      #include <stdio.h> #include <stdlib.h>

      struct personalData { char name[20]; char lastName[20]; int age; }

      int main() { printf("Archivos - Guardar en un archivo!\n");

      struct personalData person; FILE *archivo; archivo = fopen(&quot;DatosPersonales001.dat&quot;, &quot;wb&quot;); if(archivo = NULL) { fflush(stdin); printf(&quot;Leer datos: \n&quot;); printf(&quot;Ingresar nombre: \n&quot;); gets(person.name); printf(&quot;Ingresar apellido: \n&quot;); gets(person.lastName); printf(&quot;Ingresar edad: \n&quot;); scanf(&quot;%i&quot;, &amp;person.age); printf(&quot;Imprimir datos: \n&quot;); printf(&quot;%s \n&quot;, person.name); printf(&quot;%s \n&quot;, person.lastName); printf(&quot;%i \n&quot;, person.age); fwrite(&amp;person, sizeof(person), 1, archivo); fclose(archivo); }else { printf(&quot;No se ha podido crear el archivo&quot;); } return 0;

      }

      Compañero, lo que pasa es que falta el ";" al final del struct. struct personalData { char name[20]; char lastName[20]; int age; };

      Tengo una duda, podría leer información de un documento que no haya creado usando c o incluso no haya creado yo, por ejemplo tengo un archivo txt o sql y quiero tomar unos nombres de ellos podría leer los archivos y tomar los nombres?

      Siii, es completamente posible. Inténtalo, es importante experimentar.