Programa en C
Enviado por Alberto Peña Núñez • 21 de Marzo de 2019 • Apuntes • 1.759 Palabras (8 Páginas) • 156 Visitas
?#include <stdio.h>
#include <windows.h> //utf-8 para Windows
#include <locale.h> //utf-8 para Linux
#include <time.h>
#include <stdlib.h>
#include <string.h>
#define MAX_COMPONENTES 10
#define MAX_ARTICULOS 100
#define TAM_LINEA 150
//#define max_articulos 100
//un componente almacenará, como máximo, 100 artículos.
//ARTÍCULOS:
struct articulo
{
/*time_t fecha_alta = time(NULL); //Si el usuario decide que la fecha de alta es aportada en la entrada de datos se asumirá dicha fecha, en caso contrario se colocará la fecha del sistema
struct tm *tlocal = localtime(&fecha_de_alta);
char fecha[128];
strftime(fecha,128,"_%d_%m_%y",tlocal);
printf("La fecha de alta es: _%s\n", fecha);*/
char id_articulo[10];
char fecha_alta[8];
char modelo[50];
char marca[25];
char tipo_de_articulo[50]; // switch cases: {"indefinido", "software", "hardware"};
double precio_articulo;
double precio_transporte;
int stock_articulo;
int id_numerico;
char identificador_general[21];
};
//COMPONENTES:
struct componente
{
char id[10];
char nombre[20];
char descripcion[150];
int stock;
struct articulo articulos[100]; //Estructura anidada
};
struct componente componentes[10];
//F(X) ALTA ARTICULO
struct componente alta_articulo(char id[10], char fecha_alta[8], char modelo[50], char marca[25], char tipo_de_articulo[50],
double precio_articulo, double precio_transporte, int stock, int id_numerico, char identificador_general);
//struct componente componentes[10];
//F(X) MOSTRAR ARTICULO
void mostrar_articulo(struct componente componentes[10]);
int main()
{
//fwrite(componentes, sizeof(struct componente),10, fichero);
/*
struct articulo devolverArray(){
struct articulo a;
//SACO LOS DATOS DE FICHERO
return a;
};
componentes[0].articulos[0] = devolverArray();
return 0;
*/
struct componente componentes[10];
setlocale(LC_ALL, "spanish"); // Cambiar locale - Suficiente para máquinas Linux
SetConsoleCP(1252); // Cambiar STDIN - Para máquinas Windows
char nombre_fichero1[100];
char linea[TAM_LINEA + 1];
int i;
int aux_comp;
printf("Nombre del fichero con el nuevo componente: ");
gets(nombre_fichero1);
strcat(nombre_fichero1, ".txt");
fflush(stdin);
for(i=0, aux_comp=0; i < MAX_COMPONENTES; i++){
if(componentes[i].stock!=-1) aux_comp++;
}
FILE *lectura1 = fopen(nombre_fichero1, "r");
if (lectura1 == NULL) {
printf ("No se puede abrir el fichero.\n");
exit(1);
}
printf("Se ha dado de alta al componente \"%d\", con los siguientes datos:\n", aux_comp);
while(!feof(lectura1)){
//copia todos los caracteres de la cadena a la que apunta "linea" en el array de caracteres apuntado por "componentes[aux_comp].id".
printf("%s", linea);
fgets(linea, TAM_LINEA, lectura1);
strcpy(componentes[aux_comp].nombre, linea);
printf("%s", linea);
fgets(linea, TAM_LINEA, lectura1);
strcpy(componentes[aux_comp].descripcion, linea);
printf("%s", linea);
fgets(linea, TAM_LINEA, lectura1);
componentes[aux_comp].stock = atoi(linea);
printf("%d\n", atoi(linea));
}
fclose(lectura1);
// printf("%s\n%s\n%s\n%d\n", componentes[aux_comp].id, componentes[aux_comp].nombre, componentes[aux_comp].descripcion, componentes[aux_comp].stock);
//Baja uno o varios componentes
printf("Nombre del fichero con el id del componente a eliminar: ");
char nombre_fichero2[100];
char id[10];
...