Recentemente ao estudar c++ foi passada uma matéria denominada de modularização, porém foi passado em printf (como linguagem c). Queria saber se tem como fazer isso em c++ usando cout/cin e recursos geralmente usados em c++.
Também gostaria de saber sobre alguns códigos que não sei para que servem que são:
setbuf()
gets()
appen
Abaixo o código da matéria ↓
#include <stdio.h>
#include <stdlib.h>
FILE* AbreArquivo(char modo, char caminho[30]){
FILE *arquivo;
switch(modo){
case 'g':
arquivo = fopen(caminho,"wt");
break;
case 'l':
arquivo = fopen(caminho,"rt");
break;
case 'a':
arquivo = fopen(caminho,"a");
break;
}
if(arquivo==NULL){ //Se houver algum erro, o ponteiro apontará para NULL
printf("Nao foi possivel abrir o arquivo");
exit(0);
}
return arquivo;
}
void FecharArquivo(FILE *arquivo){
fclose(arquivo);
}
void Cadastra(char nome[30], int telefone){
FILE *arquivo;
arquivo = AbreArquivo('a', "agenda.txt");
fprintf(arquivo, "%s %d\n", nome, telefone);
FecharArquivo(arquivo);
}
void Listar(){
FILE *arquivo;
char nome[30];
int telefone;
arquivo = AbreArquivo('l',"agenda.txt");
while(!feof(arquivo)){
fscanf(arquivo,"%s %d ", &nome, &telefone);
printf("Nome: %s - Telefone: %d\n", nome, telefone);
}
FecharArquivo(arquivo);
}
int main(){
int opcao;
char nome[30];
int telefone;
do{
system("cls");
printf("\n\n\t\tBem Vindo ao programa AGENDA\n");
printf("\nMENU");
printf("\n 1 - Cadastrar Nome e telefone");
printf("\n 2 - Listar todos os Nomes e telefones");
printf("\n 3 - Sair");
printf("\nDigite uma opcao: ");
scanf("%d", &opcao);
system("cls");
switch(opcao){
case 1:
printf("\nDigite o nome: ");
setbuf(stdin,NULL);
gets(nome);
printf("\nDigite o telefone: ");
scanf("%d", &telefone);
Cadastra(nome, telefone);
system("pause");
break;
case 2:
Listar();
system("pause");
break;
case 3:
printf("\n\nFinalizando...\n\n");
system("pause");
exit(0);
break;
default:
printf("\n\nOpcao invalida! Tente Novamente!\n\n");
system("pause");
}
}while(opcao!=3);
return 0;
}