elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: [1]
1  Foros Generales / Dudas Generales / Re: Codigo C archivos en: 5 Septiembre 2016, 04:42 am
YA lo intente pero me da errores :/
2  Foros Generales / Dudas Generales / Codigo C archivos en: 5 Septiembre 2016, 04:16 am
Hola hice un programa que realiza el registro de calificaciones de 10 alumnos con 5 materias.
Pero apenas voy comenzando a tocar el tema de archivos y no se como guardar los datos que introduje en la ejecución del programa en un archivo de .txt
¿Alguien me puede ayudar?

Este es mi código
Código
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. /*Definimos dimensiones para el registro de alumnos*/
  6. #define M 11 /*Definimos los renglones para el registro de alumnos*/
  7. #define N 6 /*Definimos las columnas para el registro de materias*/
  8.  
  9. typedef struct{ /*Define un nuevo tipo de dato llamado Registro
  10.                  de tipo estructura y sus punteros*/
  11. char* nombre[M];/*Nombre es un arreglo de 10 elemtos
  12.                y estos son punteros a cadenas, gurda direccion*/
  13. char* clases[N];
  14.  
  15. float notas[M][N];
  16.  
  17. }Registro;
  18.  
  19. void RegistrarAlumnos (Registro *a);
  20. void RegistrarClases (Registro *a);
  21. void RegistrarNotas(Registro *a);
  22. int validarNumero  (char buffer[]);
  23.  
  24. int main (){
  25.  
  26. Registro datos;/*Variable de tipo registro*/
  27. int i,j;/*Variable local*/
  28.  
  29. RegistrarAlumnos (&datos);/*Se le pasa la direccion de datos*/
  30. RegistrarClases (&datos);/*Se le pasa la direccion de datos*/
  31. RegistrarNotas(&datos);
  32.  
  33. for (i=1;i<M;i++){
  34. printf ("\nNOMBRE DE ALUMNO %d : %s\n",i,datos.nombre[i]);
  35.  
  36.  for (j=1;j<N;j++){
  37. printf ("%s : %.2f\n",datos.clases[j],datos.notas[i][j]);
  38. }
  39.  
  40. printf("\n\n");
  41. system ("pause");/*Pausa antes de que finalice el programa*/
  42. }
  43. }
  44.  
  45.  
  46. void RegistrarAlumnos (Registro *a){/*Arreglo para registro de alumnos*/
  47.    char buffer[50],*auxiliar;/*Buffer guarda momentaneamente el nombre del alumno y el puntero
  48.                          hace referencia a la direccion del buffer*/
  49.    int i=1;/*Nos servira para un ciclo*/
  50.  
  51.    while (i<M){
  52.     printf ("INGRESE NOMBRE Y APELLIDOS :"); fflush (stdin);gets (buffer);/*Ingreso de datos, stdin limpia entradas del teclado,
  53.                                                                      gets lee cadena de caracter y la guarda en buffer*/
  54.   auxiliar=malloc(sizeof(buffer));/*A auxiliar se le asigna el tamaño de bloque de memoria de buffer*/
  55.       if (auxiliar==NULL){/*Se utiliza en caso de que el ordenador no cuente con memoria para auxiliar*/
  56.       printf("ERROR: INSUFICIENTE MEMORIA\n\n"); system ("pause"); exit (-1);
  57.  
  58.   }
  59.   strcpy (auxiliar,buffer);
  60.   a->nombre[i]=auxiliar;/*A a se le asignara la memoria de buffer*/
  61.   i++;/*Contador para alumno*/
  62. }
  63.  
  64. }
  65.  
  66. void RegistrarClases (Registro *a){/*Arreglo para registro de materias*/
  67.  
  68. char buffer[50],*auxiliar;/*Buffer guarda momentaneamente el nombre de la materia y el puntero
  69.                          hace referencia a la direccion del buffer*/
  70.    int i=1;/*Nos servira para un ciclo*/
  71.    system("cls");
  72.  
  73.    while (i<N){
  74.     printf ("INGRESE MATERIAS %d :",i); fflush (stdin);gets (buffer);/*Ingreso de datos, stdin limpia entradas del teclado,
  75.                                                                      gets lee cadena de caracter y la guarda en buffer*/
  76.   auxiliar=malloc(sizeof(buffer));/*A auxiliar se le asigna el tamaño de bloque de memoria de buffer*/
  77.       if (auxiliar==NULL){/*Se utiliza en caso de que el ordenador no cuente con memoria para auxiliar*/
  78.       printf("ERROR: INSUFICIENTE MEMORIA\n\n"); system ("pause"); exit (-1);
  79.  
  80.   }
  81.   strcpy (auxiliar,buffer);
  82.   a->clases[i]=auxiliar;/*A a se le asignara la memoria de buffer*/
  83.   i++;/*Contador para las clases*/
  84.  
  85.   }
  86. }
  87.  
  88.   void RegistrarNotas(Registro *a){
  89.    int i,j;
  90.    char buffer[10];
  91.    system ("cls");
  92.  
  93.    for (i=1;i<M;i++){/*Se rellena el campo notas*/
  94.         printf("\nALUMNO : %s\n\n\t\tREGISTRO DE CALIFICACION\n\n",a->nombre[i]);    
  95.  
  96. for(j=1;j<N;j++){/*Ciclo para corroborar que las notas sean numeros*/
  97. do{
  98.                printf("%s : ",a->clases[j]);fflush(stdin);gets(buffer);
  99.                }while(!validarNumero(buffer));
  100. a->notas[i][j]=atof(buffer);/*Cadena de caracteres a float*/
  101.  
  102.       }
  103.   }
  104. }
  105.  
  106.  
  107.   int validarNumero(char buffer[]){
  108.  
  109.   int i=0,verdadero=1;
  110.   while ((buffer[i]!='\0')&&verdadero)
  111.   {
  112.   if((buffer[i]=='1')||(buffer[i]=='2')||(buffer[i]=='3')||(buffer[i]=='4')||
  113.    (buffer[i]=='5')||(buffer[i]=='6')||(buffer[i]=='7')||(buffer[i]=='8')||
  114.    (buffer[i]=='9')||(buffer[i]=='0')||(buffer[i]=='.'))
  115.    verdadero=1;
  116.  
  117.   else
  118.   verdadero=0;
  119.   i++;
  120.   }
  121.   return (verdadero);
  122.   }
  123.  

[MOD] Usar etiquetas GeSHi para publicar código. Gracias.
3  Programación / Programación C/C++ / Ayuda con MANEJO DE ARCHIVOS en: 2 Marzo 2016, 05:11 am
Básicamente el programa lee una matriz que se encuentra en un archivo texto, pero ahora quiero agregar la suma por renglones y también por columnas pero guardarlo en un archivo nuevo.

Lo que no entiendo es como puedo leer mi archivo e introducir los valores y guardarlo en otro.

mi código es este:

#include<stdio.h>

int main(){
   
   char c;
   FILE *f;//f es nuestro fichero
   
   f = fopen ("Matriz.txt", "r");
   
if (f == NULL){
   printf("No se a podido abrir el fichero.\n");
   exit (1);
}

while (c != EOF){
   c = fgetc (f);
   printf ("%c",c);
}
   printf ("\n");
   fclose (f);
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines