Boas eu tenho um projeto na escola que consiste em gerir uma lista de compras onde temos que criar categorias, criar produtos, nome, categoria, caloria, com/sem lactose, criar lista de compras, inserir eliminar e editar produtos, ler e gravar as listas de compras em formato txt, eu fiz o codigo mas não estou a conseguir acabar e tem varios erros gostava que vissem e me dessem dicas como acabar e que erros estou a cometer, neste momento não sei como meter os produtos nem a dizer quantas calorias e lactose.
printf("\n\n-Menu\n\n");
printf("1- Criar uma categoria\n");
printf("2- Inserir uma lista\n");
printf("3- Remover as listas\n");
printf("4- Modificar uma lista\n");
printf("5- Remover os produtos de uma lista\n");
printf("6- Mostrar uma categoria\n");
printf("7- Remover uma categoria\n");
printf("8. Sair\n");
do
{
printf("\n\nO que pretende fazer: ");
scanf(" %d",&opcao);
switch (opcao)
{
case 1:
criar_categorias_produto();
//criaçao das categorias
break;
case 2:
//inserir uma lista
inserir_lista();
break;
case 3:
//remover listas
remover_listas();
break;
case 4:
//modificar listas
modificar_lista();
break;
case 5:
//remover produtos
remover_produto();
break;
case 6:
//mostrar categorias criadas
mostrar_categorias();
break;
case 7:
//remover categorias
remover_categorias();
exit(0);
break;
case 8:
// terminar o programa
exit(0);
break;
default:
// opção inválida
break;
}
}
while (opcao != 8);
}
void criar_categorias_produto(){
// algoritmo para criar uma agenda
char nome_categoria[50];
char nome_categoriatxt[50];
char nome_categoriaics[50];
char nome_categoriacsv[50];
FILE *categoria;
printf("\n\nDigite o nome para a sua categoria: ");
fflush(stdin); //limpar o buffer do teclado
gets(nome_categoria); //obtem o nome que o utilizador escreveu
strcpy(nome_categoriatxt,nome_categoria);
strcat(&nome_categoriatxt, ".txt"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado
categoria = fopen(nome_categoriatxt, "w"); // abre em modo de escrita
if(categoria == NULL)
{
printf("Problemas na criacao do arquivo\n");
return;
}
strcpy(nome_categoriaics,nome_categoria);
strcat(&nome_categoriaics, ".ics");//acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .ics
categoria = fopen(nome_categoriaics, "w"); // abre em modo de escrita
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
strcpy(nome_categoriacsv,nome_categoria);
strcat(&nome_categoriacsv, ".csv");//acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .csv
categoria = fopen(nome_categoriacsv, "w"); // abre em modo de escrita
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
printf("\nCategoria criada com sucesso em tres formatos de ficheiro (txt, ics, csv) !\n\n");
fclose(categoria); //fecha o ficheiro agendas
}
void inserir_lista(){
// algoritmo para inserir uma nova lista em uma categoria
char nome_categoria[50];
char nome_categoriatxt[50];
char nome_categoriaics[50];
char nome_categoriacsv[50];
FILE *categoria;
//abre a lista pretendida pelo o utilizador e apresenta as opcoes para adicionar os produtos
printf("\nDigite o nome da sua lista: ");
fflush(stdin); //limpar o buffer do teclado
gets(nome_categoria); //obtem o nome que o utilizador escreveu
strcpy(nome_categoriatxt,nome_categoria);
strcat(&nome_categoriatxt, ".txt"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .txt
strcpy(nome_categoriaics,nome_categoria);
strcat(&nome_categoriaics, ".ics"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .ics
strcpy(nome_categoriacsv,nome_categoria);
strcat(&nome_categoriacsv, ".csv"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .csv
//guarda a variavel titulo indicada pelo o utilizador
printf("Digite o titulo da lista: ");
fflush(stdin);
fgets(lista.categoria,50,stdin);
lista.categoria[strlen(lista.categoria)-1]='\0';
//guarda a variavel local indicada pelo o utilizador
printf("Digite o local da lista: ");
fflush(stdin);
fgets(lista.nome,50,stdin);
lista.nome[strlen(lista.nome)-1]='\0';
//guarda a variavel descricao indicada pelo o utilizador
printf("Digite a descricao do lista: ");
fflush(stdin);
fgets(lista.lactose,100,stdin);
lista.lactose[strlen(lista.lactose)-1]='\0';
//gravaçao no txt
categoria = fopen(nome_categoriatxt, "a+"); // abre em modo de escrita
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
fprintf(categoria,"\nCarboidratos: %d\n",lista.carboidratos);
fprintf(categoria,"\nVerduras: %d\n",lista.verduras);
fprintf(categoria,"\nFrutas: %d\n",lista.frutas);
fprintf(categoria,"\nCarnes: %d\n",lista.carnes);
fprintf(categoria,"\nLaticinios: %d\n",lista.laticinios);
fprintf(categoria,"\nLipidos: %d\n",lista.lipidos);
//gravaçao em ics
categoria = fopen(nome_categoriaics, "a+"); // abre em modo de escrita
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
fprintf(categoria,"\nCarboidratos: %d\n",lista.carboidratos);
fprintf(categoria,"\nVerduras: %d\n",lista.verduras);
fprintf(categoria,"\nFrutas: %d\n",lista.frutas);
fprintf(categoria,"\nCarnes: %d\n",lista.carnes);
fprintf(categoria,"\nLaticinios: %d\n",lista.laticinios);
fprintf(categoria,"\nLipidos: %d\n",lista.lipidos);
//gravaçao no csv
categoria = fopen(nome_categoriacsv, "a+"); // abre em modo de escrita
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
fprintf(categoria,"\nCarboidratos: %d\n",lista.carboidratos);
fprintf(categoria,"\nVerduras: %d\n",lista.verduras);
fprintf(categoria,"\nFrutas: %d\n",lista.frutas);
fprintf(categoria,"\nCarnes: %d\n",lista.carnes);
fprintf(categoria,"\nLaticinios: %d\n",lista.laticinios);
fprintf(categoria,"\nLipidos: %d\n",lista.lipidos);
printf("\nLista inserida com sucesso!\n\n");
fclose(categoria);
}
void mostrar_categorias()
{
// algoritmo para mostrar eventos de uma agenda
int c;
int opcao;
char nome_categoria[50];
char nome_categoriatxt[50];
char nome_categoriaics[50];
char nome_categoriacsv[50];
printf("\nDigite o nome da sua categoria: ");
fflush(stdin); //limpar o buffer do teclado
gets(nome_categoria); //obtem o nome que o utilizador escreveu
if(opcao==1)
{
strcpy(nome_categoriatxt,nome_categoria);
strcat(&nome_categoriatxt, ".txt"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .txt
categoria=fopen(nome_categoriatxt,"r");
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
printf("\n\nEsta e a categoria %s:\n\n",nome_categoriatxt);
if (categoria)
{
while ((c = getc(categoria)) != EOF)
{
putchar(c);
}
}
}
else if(opcao==2)
{
strcpy(nome_categoriacsv,nome_categoria);
strcat(&nome_categoriacsv, ".csv"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .txt
categoria=fopen(nome_categoriacsv,"r");//abertura do ficheiro em modo leitura
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
printf("\n\nEsta e a categoria %s:\n\n",nome_categoriacsv);
if (categoria)
{
while ((c = getc(categoria)) != EOF)
{
putchar(c);
}
}
}
else if(opcao==3)
{
strcpy(nome_categoriaics,nome_categoria);
strcat(&nome_categoriaics, ".ics"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .txt
categoria=fopen(nome_categoriaics,"r");
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
printf("\n\nEsta e a agenda %s:\n\n",nome_categoriaics);
if (categoria)
{
while ((c = getc(categoria)) != EOF)
{
putchar(c);
}
}
}
else {}
fclose(categoria);
}
void modificar_lista(){
// algoritmo para modificar uma lista de uma categoria
//Menu de edicao dqs listas
int op_alterar;
char c;
int temp;
int numerolista,linha_lista;
int num_lista();
char nome_categoria[50];
FILE *categoria, *categoria2;
printf("\n\n---------------------Menu de Edicao----------------------\n");
printf("\nDigite o nome da categoria que pretende editar: ");
fflush(stdin); //limpar o buffer do teclado
gets(nome_categoria); //obtem o nome que o utilizador escreveu
strcat(&nome_categoria, ".txt"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .txt
categoria = fopen(nome_categoria, "r"); // abre em modo de leitura
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
//pergunta ao utilizador qual o numero do evento que pretende modificar.
printf("\nQual a lista que pretende mudar: ");
scanf(" %d",&numerolista);
linha_lista= (11 * numerolista) - 9;
//coloca ficheiro categoria no inicio.
rewind(categoria);
//abre um copy.txt em modo de escrita
categoria2 = fopen("copy.txt", "w"); // abre em modo de escrita
if(categoria2 == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
c = getc(categoria);
while (c != EOF)
{
if (c == ' ')
{
temp++;
}
//até á linha da lista, copia a informaçao de um ficheiro para o outro
if (temp != linha_lista)
{
putc(c, categoria2);
}
else //quando a linha da lista aparece
{
while ((c = getc(categoria)) != ' ')
{
//escreve no ficheiro txt(categoria) a categoria indicada pelo o utilizador
printf("Digite a categoria da lista : ");
scanf(" %d",&lista.carboidratos);
fprintf(categoria2,"\nCArboidratos: %d\n",lista.carboidratos);
//escreve no ficheiro txt(categoria) a categoria indicada pelo o utilizador
printf("Digite a categoria da lista : ");
scanf(" %d",&lista.verduras);
fprintf(categoria2,"Verduras: %d\n",lista.verduras);
//escreve no ficheiro txt(categoria) a categoria indicada pelo o utilizador
printf("Digite a categoria da lista: ");
scanf(" %d",&lista.frutas);
fprintf(categoria2,"Frutas: %d\n",lista.frutas);
//escreve no ficheiro txt(categoria) a categoria indicada pelo o utilizador
printf("Digite a categoria da lista: ");
scanf(" %d",&lista.carnes);
fprintf(categoria2,"Carnes: %d\n",lista.carnes);
//escreve no ficheiro txt(categoria) a categoria indicada pelo o utilizador
printf("Digite a categoria da lista: ");
scanf(" %d",&lista.lipidos);
fprintf(categoria2,"Lipidos: %d\n",lista.lipidos);
//escreve no ficheiro txt(categoria) a categoria indicada pelo o utilizador
printf("Digite a categoria da lista: ");
scanf(" %d",&lista.laticinios);
fprintf(categoria2,"Laticinios: %d\n",lista.laticinios);
}
fflush(stdin);//limpar o buffer do teclado
putc(' ', categoria2); //poe ' ' no novo ficheiro
while ((c = getchar()) != ' ')
{
putc(c, categoria2);
//obtem os dados enviados pelo utilizador e copias para o segundo ficheiro
fputs(" ", categoria2);
temp++;
}
//continua ate ao fim do ficheiro
c = getc(categoria);
}
//fecha ambos os ficheiros
fclose(categoria);
fclose(categoria2);
//elimina o ficheiro original
remove(nome_categoria);
//muda o nome do novo ficheiro para o nome do ficheiro original e abre-o em modo leitura
rename("copy.txt", nome_categoria);
categoria=fopen(nome_categoria,"r");
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
//le o caratere do ficheiro
c = getc(categoria);
//ate o ultimo carater do ficheiro ser encontrado
while (c != EOF)
{
printf("%c", c);
//todos os carateres obtidos são copiados
c = getc(categoria);
}
//fecha o ficheiro
fclose(categoria);
}
}
void remover_listas()
{
// algoritmo para remover um evento de uma agenda
FILE *categoria;
char nome_categoria[50];
char nome_categoriatxt[50];
char nome_categoriaics[50];
char nome_categoriacsv[50];
printf("\nDigite o nome da lista que pretende remover das categorias : ");
fflush(stdin); //limpar o buffer do teclado
gets(nome_categoria); //obtem o nome que o utilizador escreveu
strcpy(nome_categoriatxt,nome_categoria);
strcat(&nome_categoriatxt, ".txt"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .txt
categoria=fopen(nome_categoriatxt,"w");
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
strcpy(nome_categoriaics,nome_categoria);
strcat(&nome_categoriaics, ".ics"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .ics
categoria=fopen(nome_categoriaics,"w");
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
strcpy(nome_categoriacsv,nome_categoria);
strcat(&nome_categoriacsv, ".csv"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .csv
categoria=fopen(nome_categoriacsv,"w");
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
printf("\nListas removidas com sucesso\n");
fclose(categoria);
}
printf("\nDigite o nome da categoria que pretende remover: ");
fflush(stdin); //limpar o buffer do teclado
gets(nome_categoria); //obtem o nome que o utilizador escreveu
strcpy(nome_categoriatxt,nome_categoria);
strcat(&nome_categoriatxt, ".txt"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .txt
remove(nome_categoriatxt);
strcpy(nome_categoriaics,nome_categoria);
strcat(&nome_categoriaics, ".ics"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .ics
remove(nome_categoriaics);
strcpy(nome_categoriacsv,nome_categoria);
strcat(&nome_categoriacsv, ".csv"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .csv
remove(nome_categoriacsv);
Pergunta
hezzDD
Boas eu tenho um projeto na escola que consiste em gerir uma lista de compras onde temos que criar categorias, criar produtos, nome, categoria, caloria, com/sem lactose, criar lista de compras, inserir eliminar e editar produtos, ler e gravar as listas de compras em formato txt, eu fiz o codigo mas não estou a conseguir acabar e tem varios erros gostava que vissem e me dessem dicas como acabar e que erros estou a cometer, neste momento não sei como meter os produtos nem a dizer quantas calorias e lactose.
Aqui vai o codico:
#include <stdio.h>
#include <string.h>
#include <locale.h>
//ESTRUTURAS//
struct categoria{
int carboidratos, verduras, frutas;
int carnes, laticinios, lipidos;
char nome[50];
char lactose[50];
char categoria[100];
int kcl;
} lista;
// FUNÇÕES//
void criar_categorias_produto();
void mostrar_categorias();
void criar_produtos();
void inserir_listas();
void menu_principal();
void modificar_lista();
void remover_lista();
void remover_categorias();
//VARIAVES //
int listacount=1;
//FUNÇÃO MAIN//
int main(){
menu_principal();
}
//FUNÇÕES//
void menu_principal(){
int opcao;
printf("\n\n-Menu\n\n");
printf("1- Criar uma categoria\n");
printf("2- Inserir uma lista\n");
printf("3- Remover as listas\n");
printf("4- Modificar uma lista\n");
printf("5- Remover os produtos de uma lista\n");
printf("6- Mostrar uma categoria\n");
printf("7- Remover uma categoria\n");
printf("8. Sair\n");
do
{
printf("\n\nO que pretende fazer: ");
scanf(" %d",&opcao);
switch (opcao)
{
case 1:
criar_categorias_produto();
//criaçao das categorias
break;
case 2:
//inserir uma lista
inserir_lista();
break;
case 3:
//remover listas
remover_listas();
break;
case 4:
//modificar listas
modificar_lista();
break;
case 5:
//remover produtos
remover_produto();
break;
case 6:
//mostrar categorias criadas
mostrar_categorias();
break;
case 7:
//remover categorias
remover_categorias();
exit(0);
break;
case 8:
// terminar o programa
exit(0);
break;
default:
// opção inválida
break;
}
}
while (opcao != 8);
}
void criar_categorias_produto(){
// algoritmo para criar uma agenda
char nome_categoria[50];
char nome_categoriatxt[50];
char nome_categoriaics[50];
char nome_categoriacsv[50];
FILE *categoria;
printf("\n\nDigite o nome para a sua categoria: ");
fflush(stdin); //limpar o buffer do teclado
gets(nome_categoria); //obtem o nome que o utilizador escreveu
strcpy(nome_categoriatxt,nome_categoria);
strcat(&nome_categoriatxt, ".txt"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado
categoria = fopen(nome_categoriatxt, "w"); // abre em modo de escrita
if(categoria == NULL)
{
printf("Problemas na criacao do arquivo\n");
return;
}
strcpy(nome_categoriaics,nome_categoria);
strcat(&nome_categoriaics, ".ics");//acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .ics
categoria = fopen(nome_categoriaics, "w"); // abre em modo de escrita
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
strcpy(nome_categoriacsv,nome_categoria);
strcat(&nome_categoriacsv, ".csv");//acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .csv
categoria = fopen(nome_categoriacsv, "w"); // abre em modo de escrita
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
printf("\nCategoria criada com sucesso em tres formatos de ficheiro (txt, ics, csv) !\n\n");
fclose(categoria); //fecha o ficheiro agendas
}
void inserir_lista(){
// algoritmo para inserir uma nova lista em uma categoria
char nome_categoria[50];
char nome_categoriatxt[50];
char nome_categoriaics[50];
char nome_categoriacsv[50];
FILE *categoria;
//abre a lista pretendida pelo o utilizador e apresenta as opcoes para adicionar os produtos
printf("\nDigite o nome da sua lista: ");
fflush(stdin); //limpar o buffer do teclado
gets(nome_categoria); //obtem o nome que o utilizador escreveu
strcpy(nome_categoriatxt,nome_categoria);
strcat(&nome_categoriatxt, ".txt"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .txt
strcpy(nome_categoriaics,nome_categoria);
strcat(&nome_categoriaics, ".ics"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .ics
strcpy(nome_categoriacsv,nome_categoria);
strcat(&nome_categoriacsv, ".csv"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .csv
//guarda a variavel titulo indicada pelo o utilizador
printf("Digite o titulo da lista: ");
fflush(stdin);
fgets(lista.categoria,50,stdin);
lista.categoria[strlen(lista.categoria)-1]='\0';
//guarda a variavel local indicada pelo o utilizador
printf("Digite o local da lista: ");
fflush(stdin);
fgets(lista.nome,50,stdin);
lista.nome[strlen(lista.nome)-1]='\0';
//guarda a variavel descricao indicada pelo o utilizador
printf("Digite a descricao do lista: ");
fflush(stdin);
fgets(lista.lactose,100,stdin);
lista.lactose[strlen(lista.lactose)-1]='\0';
//gravaçao no txt
categoria = fopen(nome_categoriatxt, "a+"); // abre em modo de escrita
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
fprintf(categoria,"\nCarboidratos: %d\n",lista.carboidratos);
fprintf(categoria,"\nVerduras: %d\n",lista.verduras);
fprintf(categoria,"\nFrutas: %d\n",lista.frutas);
fprintf(categoria,"\nCarnes: %d\n",lista.carnes);
fprintf(categoria,"\nLaticinios: %d\n",lista.laticinios);
fprintf(categoria,"\nLipidos: %d\n",lista.lipidos);
//gravaçao em ics
categoria = fopen(nome_categoriaics, "a+"); // abre em modo de escrita
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
fprintf(categoria,"\nCarboidratos: %d\n",lista.carboidratos);
fprintf(categoria,"\nVerduras: %d\n",lista.verduras);
fprintf(categoria,"\nFrutas: %d\n",lista.frutas);
fprintf(categoria,"\nCarnes: %d\n",lista.carnes);
fprintf(categoria,"\nLaticinios: %d\n",lista.laticinios);
fprintf(categoria,"\nLipidos: %d\n",lista.lipidos);
//gravaçao no csv
categoria = fopen(nome_categoriacsv, "a+"); // abre em modo de escrita
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
fprintf(categoria,"\nCarboidratos: %d\n",lista.carboidratos);
fprintf(categoria,"\nVerduras: %d\n",lista.verduras);
fprintf(categoria,"\nFrutas: %d\n",lista.frutas);
fprintf(categoria,"\nCarnes: %d\n",lista.carnes);
fprintf(categoria,"\nLaticinios: %d\n",lista.laticinios);
fprintf(categoria,"\nLipidos: %d\n",lista.lipidos);
printf("\nLista inserida com sucesso!\n\n");
fclose(categoria);
}
void mostrar_categorias()
{
// algoritmo para mostrar eventos de uma agenda
int c;
int opcao;
char nome_categoria[50];
char nome_categoriatxt[50];
char nome_categoriaics[50];
char nome_categoriacsv[50];
FILE *categoria;
printf("\n\n---------------------Menu----------------------\n\n");
printf("1. Ficheiro txt\n");
printf("2. Ficheiro csv\n");
printf("3. Ficheiro ics\n");
printf("-----------------------------------------------\n\n");
scanf(" %d", &opcao);
printf("\nDigite o nome da sua categoria: ");
fflush(stdin); //limpar o buffer do teclado
gets(nome_categoria); //obtem o nome que o utilizador escreveu
if(opcao==1)
{
strcpy(nome_categoriatxt,nome_categoria);
strcat(&nome_categoriatxt, ".txt"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .txt
categoria=fopen(nome_categoriatxt,"r");
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
printf("\n\nEsta e a categoria %s:\n\n",nome_categoriatxt);
if (categoria)
{
while ((c = getc(categoria)) != EOF)
{
putchar(c);
}
}
}
else if(opcao==2)
{
strcpy(nome_categoriacsv,nome_categoria);
strcat(&nome_categoriacsv, ".csv"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .txt
categoria=fopen(nome_categoriacsv,"r");//abertura do ficheiro em modo leitura
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
printf("\n\nEsta e a categoria %s:\n\n",nome_categoriacsv);
if (categoria)
{
while ((c = getc(categoria)) != EOF)
{
putchar(c);
}
}
}
else if(opcao==3)
{
strcpy(nome_categoriaics,nome_categoria);
strcat(&nome_categoriaics, ".ics"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .txt
categoria=fopen(nome_categoriaics,"r");
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
printf("\n\nEsta e a agenda %s:\n\n",nome_categoriaics);
if (categoria)
{
while ((c = getc(categoria)) != EOF)
{
putchar(c);
}
}
}
else {}
fclose(categoria);
}
void modificar_lista(){
// algoritmo para modificar uma lista de uma categoria
//Menu de edicao dqs listas
int op_alterar;
char c;
int temp;
int numerolista,linha_lista;
int num_lista();
char nome_categoria[50];
FILE *categoria, *categoria2;
printf("\n\n---------------------Menu de Edicao----------------------\n");
printf("\nDigite o nome da categoria que pretende editar: ");
fflush(stdin); //limpar o buffer do teclado
gets(nome_categoria); //obtem o nome que o utilizador escreveu
strcat(&nome_categoria, ".txt"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .txt
categoria = fopen(nome_categoria, "r"); // abre em modo de leitura
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
//pergunta ao utilizador qual o numero do evento que pretende modificar.
printf("\nQual a lista que pretende mudar: ");
scanf(" %d",&numerolista);
linha_lista= (11 * numerolista) - 9;
//coloca ficheiro categoria no inicio.
rewind(categoria);
//abre um copy.txt em modo de escrita
categoria2 = fopen("copy.txt", "w"); // abre em modo de escrita
if(categoria2 == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
c = getc(categoria);
while (c != EOF)
{
if (c == ' ')
{
temp++;
}
//até á linha da lista, copia a informaçao de um ficheiro para o outro
if (temp != linha_lista)
{
putc(c, categoria2);
}
else //quando a linha da lista aparece
{
while ((c = getc(categoria)) != ' ')
{
fprintf(categoria,"\nLsta: %d\n",listacount++);
num_lista();
//escreve no ficheiro txt(categoria) a categoria indicada pelo o utilizador
printf("Digite a categoria da lista : ");
scanf(" %d",&lista.carboidratos);
fprintf(categoria2,"\nCArboidratos: %d\n",lista.carboidratos);
//escreve no ficheiro txt(categoria) a categoria indicada pelo o utilizador
printf("Digite a categoria da lista : ");
scanf(" %d",&lista.verduras);
fprintf(categoria2,"Verduras: %d\n",lista.verduras);
//escreve no ficheiro txt(categoria) a categoria indicada pelo o utilizador
printf("Digite a categoria da lista: ");
scanf(" %d",&lista.frutas);
fprintf(categoria2,"Frutas: %d\n",lista.frutas);
//escreve no ficheiro txt(categoria) a categoria indicada pelo o utilizador
printf("Digite a categoria da lista: ");
scanf(" %d",&lista.carnes);
fprintf(categoria2,"Carnes: %d\n",lista.carnes);
//escreve no ficheiro txt(categoria) a categoria indicada pelo o utilizador
printf("Digite a categoria da lista: ");
scanf(" %d",&lista.lipidos);
fprintf(categoria2,"Lipidos: %d\n",lista.lipidos);
//escreve no ficheiro txt(categoria) a categoria indicada pelo o utilizador
printf("Digite a categoria da lista: ");
scanf(" %d",&lista.laticinios);
fprintf(categoria2,"Laticinios: %d\n",lista.laticinios);
}
fflush(stdin);//limpar o buffer do teclado
putc(' ', categoria2); //poe ' ' no novo ficheiro
while ((c = getchar()) != ' ')
{
putc(c, categoria2);
//obtem os dados enviados pelo utilizador e copias para o segundo ficheiro
fputs(" ", categoria2);
temp++;
}
//continua ate ao fim do ficheiro
c = getc(categoria);
}
//fecha ambos os ficheiros
fclose(categoria);
fclose(categoria2);
//elimina o ficheiro original
remove(nome_categoria);
//muda o nome do novo ficheiro para o nome do ficheiro original e abre-o em modo leitura
rename("copy.txt", nome_categoria);
categoria=fopen(nome_categoria,"r");
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
//le o caratere do ficheiro
c = getc(categoria);
//ate o ultimo carater do ficheiro ser encontrado
while (c != EOF)
{
printf("%c", c);
//todos os carateres obtidos são copiados
c = getc(categoria);
}
//fecha o ficheiro
fclose(categoria);
}
}
void remover_listas()
{
// algoritmo para remover um evento de uma agenda
FILE *categoria;
char nome_categoria[50];
char nome_categoriatxt[50];
char nome_categoriaics[50];
char nome_categoriacsv[50];
printf("\nDigite o nome da lista que pretende remover das categorias : ");
fflush(stdin); //limpar o buffer do teclado
gets(nome_categoria); //obtem o nome que o utilizador escreveu
strcpy(nome_categoriatxt,nome_categoria);
strcat(&nome_categoriatxt, ".txt"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .txt
categoria=fopen(nome_categoriatxt,"w");
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
strcpy(nome_categoriaics,nome_categoria);
strcat(&nome_categoriaics, ".ics"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .ics
categoria=fopen(nome_categoriaics,"w");
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
strcpy(nome_categoriacsv,nome_categoria);
strcat(&nome_categoriacsv, ".csv"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .csv
categoria=fopen(nome_categoriacsv,"w");
if(categoria == NULL)
{
printf("Problemas na Criacao do arquivo\n");
return;
}
printf("\nListas removidas com sucesso\n");
fclose(categoria);
}
void remover_categorias()
{
char nome_categoria[50];
char nome_categoriatxt[50];
char nome_categoriaics[50];
char nome_categoriacsv[50];
printf("\nDigite o nome da categoria que pretende remover: ");
fflush(stdin); //limpar o buffer do teclado
gets(nome_categoria); //obtem o nome que o utilizador escreveu
strcpy(nome_categoriatxt,nome_categoria);
strcat(&nome_categoriatxt, ".txt"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .txt
remove(nome_categoriatxt);
strcpy(nome_categoriaics,nome_categoria);
strcat(&nome_categoriaics, ".ics"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .ics
remove(nome_categoriaics);
strcpy(nome_categoriacsv,nome_categoria);
strcat(&nome_categoriacsv, ".csv"); //acrescenta ao nome que o utilizador indicou o formato de ficheiro em que vai ser gravado, neste caso .csv
remove(nome_categoriacsv);
printf("\nCategoria removida com sucesso\n\n");
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.