Pc18-Programa con arreglo de caracteres y
archivos.
#include<stdio.h>
#include<string.h>
char tema[100];
char desc[500];
void inic(void){
int t;
for(t=0;t<100;t++){
tema[t]='\0';
}
for(t=0;t<500;t++){
desc[t]='\0';
}
}
void introducir(void){
int r;
char t1[100];
char t2[200];
for(r=0;r<5;r++){
if(!tema[r*20]) break;
}
if(r==5){
printf("Lista de temas completa...");
}else{
printf("Reg: %d\n",r);
puts("\nIntroduce tema, max. 20 caracteres: ");
gets(t1);
if(strlen(t1)>20){
printf("\nTema %d > 20 caracteres...\n",strlen(t1));
printf("Repite 1.Introducir Tema...\n");
}else{
strcpy(&tema[r*20],t1);
//gets(&tema[r*20]);
puts("\nIntroduce desc, max 100 caracteres: ");
gets(t2);
if(strlen(t2)>100){
printf("\nDescripción %d > 100 caracteres...\n",strlen(t2));
printf("Repite 1.Introducir Tema...\n");
tema[r*20] = '\0';
}else{
strcpy(&desc[r*100],t2);
}
}
}
}
int encontrar(){
char s[20];
int r;
printf("Introduce tema:\n");
gets(s);
for(r=0;r<5;r++){
if(!strcmp(s,&tema[r*20])) break;
}
if(r==5){
printf("tema no esta...\n");
return(-1);
}
return r;
}
void desplegar(int nt){
//int nt;
printf("\nTema:%s \nDescripción: %s\n",&tema[nt*20],&desc[nt*100]);
}
void actualizar(int nt){
int r;
char t1[100];
char t2[200];
r = nt;
printf("Reg: %d\n",r);
puts("\nIntroduce tema, max. 20 caracteres: ");
gets(t1);
if(strlen(t1)>20){
printf("\nTema %d > 20 caracteres...\n",strlen(t1));
printf("Repite 1.Introducir Tema...\n");
}else{
strcpy(&tema[r*20],t1);
puts("\nIntroduce desc, max 100 caracteres: ");
gets(t2);
if(strlen(t2)>100){
printf("\nDescripción %d > 100 caracteres...\n",strlen(t2));
printf("Repite 1.Introducir Tema...\n");
tema[r*20] = '\0';
}else{
strcpy(&desc[r*100],t2);
}
}
}
void eliminar(int nt){
tema[nt*20] = '\0';
desc[nt*100] = '\0';
puts("Tema y Descripción eliminados: ");
}
void listar(void){
int r;
for(r=0;r<5;r++){
printf("\nTema:%s \nDescripción: %s\n",&tema[r*20],&desc[r*100]);
}
}
void guardar(void){
int i;
FILE *fp;
if((fp=fopen("temas.txt","w")) == 0){
puts("No se puede abrir temas");
}else{
for(i=0;i<100;i++){
putc(tema[i],fp);
}
for(i=0;i<500;i++){
putc(desc[i],fp);
}
fclose(fp);
}
}
void recuperar(void){
int i;
FILE *fp;
if((fp=fopen("temas.txt","r")) == 0){
puts("No se puede abrir temas");
}else{
puts("Recuperando Tema...\n");
for(i=0;i<100;i++){
tema[i] = getc(fp);
}
puts("Recuperando Desc...");
for(i=0;i<500;i++){
desc[i] = getc(fp);
}
fclose(fp);
}
}
int main(void){
char ca;
int nt;
inic();
//introducir();
do{
printf("\n\t\tMENU");
printf("\n1.Introducir Tema\n");
printf("2.Desplegar Tema\n");
printf("3.Actualizar Tema\n");
printf("4.Eliminar Tema\n");
printf("5.Listar Temas\n");
printf("6.Guardar Temas\n");
printf("7.Recuperar Temas\n");
printf("8.Terminar \n");
do{
printf("Seleccionar Opción: ");
//ca=getchar();
gets(&ca);
}while(ca<'1' || ca>'8');
printf("\n");
switch(ca){
case'1':
introducir();
//listar();
break;
case'2':
nt=encontrar();
if(nt!=-1) desplegar(nt);
break;
case'3':
nt=encontrar();
if(nt!=-1) actualizar(nt);
break;
case'4':
nt=encontrar();
if(nt!=-1) eliminar(nt);
break;
case'5':
listar();
break;
case'6':
guardar();
break;
case'7':
recuperar();
break;
case'8':
printf("Fin del programa...");
return(0);
}
}while(ca!='8');
return(0);
}
No hay comentarios:
Publicar un comentario