int main (){ int Casos, Case, Cont, Cont2; char String[53],String2[53]; scanf("%d",&Casos); LimpaBuffer(); for(Case=0; Case<Casos; Case++){ fgets(String,53,stdin); TiraEnter(String); Cont = 0; Cont2 = 0; if(isalpha(String[Cont2])){ String2[Cont] = String[Cont2]; Cont++; Cont2++; } while(String[Cont2] != '\0'){ if(isspace(String[Cont2]) && isalpha(String[Cont2+1])){ Cont2++; String2[Cont] = String[Cont2]; Cont++; } Cont2++; } String2[Cont]= '\n'; String2[Cont+1]= '\0'; printf("%s",String2); } return 0; }
/************** Programa Principal **************/ int main(int argc, char **argv) { /***** Declaração de variáveis, listas e arquivos *****/ FILE *fp; int i, id, c; float nota1, nota2; char codigo[MAXCOD]; char nome[MAXNOM]; char buf[MAXB]; aluno *a, *alunos = NULL; //Inicia a lista de alunos matricula *m, *matriculas = NULL; //Inicia a lista de matriculas do // Enquanto c não for digitado, continua imprimindo o menu { ImrpimeMenu(); scanf("%d%*c", &c); switch(c) { case 0: break; case 1: //Insere aluno printf("Digite a ID do aluno: "); scanf("%d%*c", &id); printf("Digite o nome do aluno: "); fgets(nome, MAXNOM, stdin); TiraEnter(nome); alunos = InsereAluno(id, strdup(nome), alunos); break; case 2: //Remove aluno printf("Digite a ID do aluno: "); scanf("%d%*c", &id); if(!EstaMatriculado(id, matriculas)) //Se o aluno estiver matriculado, não pode removê-lo alunos = RemoveAluno(id, alunos); else fprintf(stderr, "Aluno esta matriculado\n"); break; case 3: //Insere matrícula printf("Digite o codigo da disciplina: "); fgets(codigo, MAXCOD, stdin); remove_pulo(codigo); printf("Digite a ID do aluno: "); scanf("%d%*c", &id); matriculas = inserir_matricula(strdup(codigo), id, matriculas); break; case 4: //Remove Matricula printf("Digite o codigo da disciplina: "); fgets(codigo, MAXCOD, stdin); remove_pulo(codigo); printf("Digite a ID do aluno: "); scanf("%d%*c", &id); matriculas = RemoveMatricula(codigo, id, matriculas); break; case 5: //Altera notas printf("Digite o codigo da disciplina: "); fgets(codigo, MAXCOD, stdin); TiraEnter(codigo); printf("Digite a ID do aluno: "); scanf("%d%*c", &id); printf("Digite a Primeira Nota: "); scanf("%f%*c", ¬a1); printf("Digite a Segunda Nota: "); scanf("%f%*c", ¬a2); AlterarNotas(matriculas, id, codigo, nota1,nota2); break; case 6: //Procura aluno printf("Digite a ID do aluno: "); scanf("%d%*c", &id); ConsultaAlunos(id, alunos, matriculas); break; case 7: //Procura alunos matrículados em uma disciplina printf("Digite o codigo da disciplina: "); fgets(codigo, MAXCOD, stdin); TiraEnter(codigo); ConsultaDisciplina(codigo, alunos, matriculas); break; case 8: //Carrega de um arquivo DestroiAlunos(alunos); DestroiMatriculas(matriculas); /***** Carrega alunos a partir do arquivo alunos.sav *****/ if((fp = fopen("alunos.sav", "r")) == NULL) //Se houver algum erro ao carregar o arquivo, retorna erro {{ fprintf(stderr, "Impossivel carregar\n"); break; } do { fgets(nome, MAXNOM, fp); TiraEnter(nome); fscanf(fp, "%d%*c", &id); alunos = InsereAluno(id, strdup(nome),alunos); } while(!feof(fp)); close(fp); /***** Carrega matriculas a partir do arquivo matriculas.sav *****/ if((fp = fopen("matriculas.sav", "r")) == NULL) { fprintf(stderr, "Impossivel carregar\n"); break; } do { fgets(codigo, MAXCOD, fp); remove_pulo(codigo); fscanf(fp, "%d%*c", &id); fscanf(fp, "%f%*c", ¬a1); fscanf(fp, "%f%*c", ¬a2); matriculas = InsereMatricula(strdup(codigo), id, matriculas); AlteraNotas(matriculas, id, codigo,nota1, nota2); } while(!feof(fp)); close(fp); break; case 9: a = alunos; /***** Salva lista de alunos no arquivo alunos.sav *****/ if((fp = fopen("alunos.sav", "w")) == NULL) fprintf(stderr, "Impossivel salvar\n"); else while(a) { fprintf(fp, "%s\n", a->nome); fprintf(fp, "%d\n", a->id); a=a->next; } close(fp); m = matriculas; /***** Salva matriculas no arquivos matriculas.sav *****/ if((fp = fopen("matriculas.sav", "w")) == NULL) fprintf(stderr, "Impossivel salvar\n"); else while(m) { fprintf(fp, "%s\n", m->codigo); fprintf(fp, "%d\n", m->id); fprintf(fp, "%f\n", m->nota1); fprintf(fp, "%f\n", m->nota2); m=m->next; } close(fp); break; default: //Qualquer outra opcao digitada retorna erro fprintf(stderr, "Opcao invalida\n"); break; } } while(c); DestroiAlunos(alunos); //Destroi lista de alunos DestroiMatriculas(matriculas); //Destroi matrículas return(0); } void TiraEnter(char *s) //Remove o \n das strings lidas com fgets { while(*s != '\0' && *s != '\n') s++; *s = '\0'; }