btmvdr 0 Denunciar post Postado Junho 29, 2013 Tô fazendo esse programa pra cadastrar alunos, só que na hora de imprimir na tela os alunos cadastrados, só tá imprimindo na tela o último aluno que foi cadastrado.. Como faço pro programa mostrar todos os cadastrados na tela? Problema também na hora que estou digitando o cadastro ele pula do telefone e vai direto pro email. Não sei como resolvo isso. E também tá dando um erro na hora que imprime na tela o Uf e o telefone estão ficando na mesma linha e é cada um em uma linha, como ajeito isso? E outra coisa, na hora de declarar ''int'' pro número e pro telefone ele não funciona, só funciona se eu declarar ''char'' ai fica char numero[5] e char telefone[12], como faço pra funcionar com int? Valeu!! #include<stdio.h> #include<stdlib.h> struct cadastro{ char nome[50]; char rua[50]; char numero[5]; char bairro[30]; char cidade[20]; char uf[2]; char telefone[12]; char email[30]; }; int main(){ struct cadastro aux; FILE *ponteiroArquivo; int menu; while (menu!=5){ printf("\tCadastro de Alunos\n\n"); printf("1 - Inserir aluno.\n"); printf("2 - Exibir lista de alunos.\n"); printf("3 - Sair.\n"); printf("\n\n\n\n"); scanf("%d",&menu); switch(menu){ case 1: printf("Inserir aluno, foi selecionado.\n"); ponteiroArquivo=(fopen("arquivo.txt","a")); // "a" - cria um arquivo novo, ou modifica um ja existente. //cadastro*aux; //aux = new cadastro; getchar(); printf("Digite seu nome: "); fgets (aux.nome, 50 ,stdin); printf("Rua: "); fgets (aux.rua, 50 ,stdin); printf("Numero: "); fgets (aux.numero, 5 ,stdin); printf("Bairro: "); fgets (aux.bairro, 30 ,stdin); printf("Cidade: "); fgets (aux.cidade, 20 ,stdin); printf("UF: "); fgets (aux.uf , 2 ,stdin); printf("Telefone: "); fgets (aux.telefone, 12 ,stdin); printf("Email: "); fgets (aux.email , 30 ,stdin); //grava os dados no arquivo com fprintf fprintf(ponteiroArquivo,"\nnome:%s",aux.nome); fprintf(ponteiroArquivo,"\nRua:%s",aux.rua); fprintf(ponteiroArquivo,"\nNumero:%s",aux.numero); fprintf(ponteiroArquivo,"\nBairro:%s",aux.bairro); fprintf(ponteiroArquivo,"\nCidade:%s",aux.cidade); fprintf(ponteiroArquivo,"\nUF:%s",aux.uf); fprintf(ponteiroArquivo,"\nTelefone:%s",aux.telefone); fprintf(ponteiroArquivo,"\nEmail:%s",aux.email); fclose(ponteiroArquivo);//fecha o arquivo break; case 2: printf("Exibir lista de alunos, foi selecionado.\n"); //abre o arquivo ponteiroArquivo=(fopen("arquivo.txt","r")); // "a" - cria um arquivo novo, ou modifica um ja existente. //usando fscanf pra ler do arquivo //exibe na tela printf("nome: %s",aux.nome); printf("Rua: %s",aux.rua); printf("Numero: %s",aux.numero); printf("Bairro: %s",aux.bairro); printf("Cidade: %s",aux.cidade); printf("UF: %s",aux.uf); printf("Telefone: %s",aux.telefone); printf("Email: %s",aux.email); if(feof(ponteiroArquivo)){ break; } fclose(ponteiroArquivo); break; case 3: printf("Sair, foi selecionado.\n"); exit(0); break; } } system("pause"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
reebr 94 Denunciar post Postado Junho 30, 2013 Use a função fwrite() para armazenar os dados (a struct inteira) no arquivo de texto. fgets é para ler strings, por isso a necessidade de declarar como char, use a função scanf para ler o número que for declarado como inteiro. Compartilhar este post Link para o post Compartilhar em outros sites
btmvdr 0 Denunciar post Postado Junho 30, 2013 Obrigado! Mas sou novo nisso, então onde eu coloco essa função fwrite() ? Em que parte do código? :upset: Consegui ajeitar a parte do int e tudo mais. Só falta mesmo mostrar todos os cadastrados na tela! Alguém me mostra como faz? :cry: Compartilhar este post Link para o post Compartilhar em outros sites
reebr 94 Denunciar post Postado Julho 1, 2013 Por exemplo: fwrite (&aux, sizeof(struct cadastro), 1, ponteiroArquivo); fread (&aux, sizeof(struct cadastro), 1, ponteiroArquivo); Eu recomendo que separe o seu código. Já sabe trabalhar com funções? ex: void gravardados (void) { FILE *fp; struct cadastro _cadastro; printf("\nNOME: "); fgets(_cadastro.nome, TEMP, stdin); printf("\nRUA: "); fgets(_cadastro.rua, TEMP, stdin); printf("\nNUMERO: "); scanf("%i%*i", &_cadastro.numero); printf("\nBAIRRO: "); fgets(_cadastro.bairro, TEMP, stdin); printf("\nCIDADE:"); fgets(_cadastro.cidade, TEMP, stdin); printf("\nUF: "); fgets(_cadastro.uf, 2, stdin); printf("\nTELEFONE: ");fgets(_cadastro.telefone, TEMP, stdin); printf("\nEMAIL: "); fgets(_cadastro.email, TEMP, stdin); fp = fopen("arquivo.txt", "a"); fwrite(&_cadastro, sizeof(struct cadastro), 1, fp); fclose(fp); } void lerdados(void) { FILE *fp; fp = fopen("arquivo.txt", "r"); if(!fp) printf("Arquivo inexistente!"); else { struct cadastro _cadastro; while (!fread (&_cadastro, sizeof(struct cadastro), 1, fp)) { printf("\nNOME: %s", _cadastro.nome); printf("\nRUA: %s", _cadastro.rua); printf("\nNUMERO: %i", _cadastro.numero); printf("\nBAIRRO: %s", _cadastro.bairro); printf("\nCIDADE: %s", _cadastro.cidade); printf("\nUF: %s", _cadastro.uf); printf("\nTELEFONE: %s",_cadastro.telefone); printf("\nEMAIL: %s", _cadastro.email); } } } * não testei o código. Compartilhar este post Link para o post Compartilhar em outros sites
btmvdr 0 Denunciar post Postado Julho 1, 2013 Não sei funções, sou iniciante ainda. :/ Eu te agradeço muito por estar me ajudando :D Olha, dese jeito, ele tá criando o arquivo certinho, mostra no arquivo criado todos que foram cadastrados, tudo ok. Só que no próprio programa, quando aperto ''2 - Exibir lista de alunos'' ele só tá mostrando na tela, só o último cadastrado, mas no arquivo ele grava todos certinho, só que tem que mostrar todos também no programa. O código tá assim : #include<stdio.h> #include<stdlib.h> struct cadastro{ char nome[50]; char rua[50]; int numero; char bairro[30]; char cidade[20]; char uf[3]; int telefone; char email[30]; }; int main(){ struct cadastro aux; FILE *ponteiroArquivo; int menu; while (menu!=5){ printf("\n\n"); printf("Cadastro de alunos:\n"); printf("1 - Cadastrar Aluno.\n"); printf("2 - Exibir lista de alunos.\n"); printf("3 - Sair.\n"); printf("\n\n"); scanf("%d",&menu); switch(menu){ case 1: printf("Inserir aluno, foi selecionado.\n"); ponteiroArquivo=(fopen("arquivo.txt","a")); // "a" - cria um arquivo novo, ou modifica um ja existente. getchar(); printf("Digite seu nome: "); fgets (aux.nome, 50 ,stdin); printf("Email: "); fgets (aux.email , 30 ,stdin); printf("Telefone: "); scanf ("%d",&aux.telefone); getchar(); printf("Rua: "); fgets (aux.rua, 50 ,stdin); printf("Numero: "); scanf ("%d",&aux.numero); getchar(); printf("Bairro: "); fgets (aux.bairro, 30 ,stdin); printf("Cidade: "); fgets (aux.cidade, 20 ,stdin); printf("UF: "); fgets (aux.uf , 3 ,stdin); getchar(); //grava os dados no arquivo com fprintf fprintf(ponteiroArquivo,"\nNome: %s",aux.nome); fprintf(ponteiroArquivo,"\nEmail: %s",aux.email); fprintf(ponteiroArquivo,"\nTelefone: %d",aux.telefone); fprintf(ponteiroArquivo,"\nRua: %s",aux.rua); fprintf(ponteiroArquivo,"\nNumero: %d",aux.numero); fprintf(ponteiroArquivo,"\nBairro: %s",aux.bairro); fprintf(ponteiroArquivo,"\nCidade: %s",aux.cidade); fprintf(ponteiroArquivo,"\nUF: %s",aux.uf); fclose(ponteiroArquivo);//fecha o arquivo break; case 2: printf("Exibir lista de alunos, foi selecionado.\n"); //abre o arquivo ponteiroArquivo=(fopen("arquivo.txt","r")); //exibe na tela printf("\nNome: %s",aux.nome); printf("Email: %s",aux.email); printf("Telefone: %d",aux.telefone); printf("\nRua: %s",aux.rua); printf("Numero: %d",aux.numero); printf("\nBairro: %s",aux.bairro); printf("Cidade: %s",aux.cidade); printf("UF: %s",aux.uf); if(feof(ponteiroArquivo)){ break; } fclose(ponteiroArquivo); break; case 3: printf("Sair, foi selecionado.\n"); exit(0); break; } } system("pause"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
btmvdr 0 Denunciar post Postado Julho 1, 2013 Ficaria dessa forma a função? Só que se for assim, está dando erro! :( #include <stdio.h> #include <stdlib.h> void inserir (); void exibir (); void sair (); struct cadastro { char nome [50]; char rua [50]; int numero [10]; char bairro [30]; char cidade [30]; char uf [3]; int telefone [12]; char email [30]; }; int main(){ struct cadastro; FILE *ponteiroArquivo; int menu; while (menu!=5){ printf("\n\n"); printf("Cadastro de alunos:\n"); printf("1 - Cadastrar Aluno.\n"); printf("2 - Exibir lista de alunos.\n"); printf("3 - Sair\n"); printf("\n\n"); scanf("%d",&menu); switch(menu){ case 1: inserir(); break; case 2: exibir(); break; case 3: sair(); break; default: printf("Opcao Invalida.\n"); }}} void inserir (void) { FILE *ponteiroArquivo; struct cadastro_cadastro; printf("\nNOME: "); fgets(_cadastro.nome, TEMP, stdin); printf("\nRUA: "); fgets(_cadastro.rua, TEMP, stdin); printf("\nNUMERO: "); scanf("%i%*i", &_cadastro.numero); printf("\nBAIRRO: "); fgets(_cadastro.bairro, TEMP, stdin); printf("\nCIDADE:"); fgets(_cadastro.cidade, TEMP, stdin); printf("\nUF: "); fgets(_cadastro.uf, 2, stdin); printf("\nTELEFONE: ");fgets(_cadastro.telefone, TEMP, stdin); printf("\nEMAIL: "); fgets(_cadastro.email, TEMP, stdin); ponteiroArquivo = fopen("arquivo.txt", "a"); fwrite(&_cadastro, sizeof(struct cadastro), 1, ponteiroArquivo); fclose(ponteiroArquivo); } void exibir (void){ FILE *ponteiroArquivo; ponteiroArquivo = fopen("arquivo.txt", "r"); if(!ponteiroArquivo) printf("Arquivo inexistente!"); else { struct cadastro _cadastro; while (!fread (&_cadastro, sizeof(struct cadastro), 1, ponteiroArquivo)) { printf("\nNOME: %s", _cadastro.nome); printf("\nRUA: %s", _cadastro.rua); printf("\nNUMERO: %d", _cadastro.numero); printf("\nBAIRRO: %s", _cadastro.bairro); printf("\nCIDADE: %s", _cadastro.cidade); printf("\nUF: %s", _cadastro.uf); printf("\nTELEFONE: %d", _cadastro.telefone); printf("\nEMAIL: %s", _cadastro.email); } } void sair(void){ exit(0);} system("pause"); return 0 ; } Dessa forma tá dando esses problemas: In function `void inserir()': 57 `_cadastro' undeclared (first use this function) (Each undeclared identifier is reported only once for each function it appears in.) 57 `TEMP' undeclared (first use this function) In function `void exibir()': 94 expected primary-expression before "void" 94 expected `;' before "void" 98 return-statement with a value, in function returning 'void' Compartilhar este post Link para o post Compartilhar em outros sites
reebr 94 Denunciar post Postado Julho 1, 2013 Não. Então esqueça por enquanto o uso de funções, para não dar um nó na sua cabeça. Tente isto no primeiro código que enviou: case 2:{ ponteiroArquivo = open("arquivo.txt", "r"); if (!ponteiroArquivo) printf("\nArquivo Inexistente!"); else { /* fread() retorna 1 enquanto for diferente de NULL. Então estamos dizendo aqui: Enquanto o retorno não for NULL... */ while (!fread (&aux, sizeof(struct cadastro), 1, ponteiroArquivo)) { printf("\nNOME: %s", aux.nome); printf("\nRUA: %s", aux.rua); printf("\nNUMERO: %i", aux.numero); printf("\nBAIRRO: %s", aux.bairro); printf("\nCIDADE: %s", aux.cidade); printf("\nUF: %s", aux.uf); printf("\nTELEFONE: %s", aux.telefone); printf("\nEMAIL: %s", aux.email); } fclose (ponteiroArquivo); } break; } Veja se resolve. Fread: http://www.cplusplus.com/reference/cstdio/fread/ Fwrite: http://www.cplusplus.com/reference/cstdio/fwrite/ Compartilhar este post Link para o post Compartilhar em outros sites
btmvdr 0 Denunciar post Postado Julho 1, 2013 Ai fica assim: #include<stdio.h> #include<stdlib.h> struct cadastro{ char nome[50]; char rua[50]; int numero; char bairro[30]; char cidade[20]; char uf[3]; int telefone; char email[30]; }; int main(){ struct cadastro aux; FILE *ponteiroArquivo; int menu; while (menu!=5){ printf("\n\n"); printf("Cadastro de alunos:\n"); printf("1 - Cadastrar Aluno.\n"); printf("2 - Exibir lista de alunos.\n"); printf("3 - Sair.\n"); printf("\n\n"); scanf("%d",&menu); switch(menu){ case 1: printf("Inserir aluno, foi selecionado.\n"); ponteiroArquivo=(fopen("arquivo.txt","a")); // "a" - cria um arquivo novo, ou modifica um ja existente. getchar(); printf("Digite seu nome: "); fgets (aux.nome, 50 ,stdin); printf("Email: "); fgets (aux.email , 30 ,stdin); printf("Telefone: "); scanf ("%d",&aux.telefone); getchar(); printf("Rua: "); fgets (aux.rua, 50 ,stdin); printf("Numero: "); scanf ("%d",&aux.numero); getchar(); printf("Bairro: "); fgets (aux.bairro, 30 ,stdin); printf("Cidade: "); fgets (aux.cidade, 20 ,stdin); printf("UF: "); fgets (aux.uf , 3 ,stdin); getchar(); //grava os dados no arquivo com fprintf fprintf(ponteiroArquivo,"\nNome: %s",aux.nome); fprintf(ponteiroArquivo,"\nEmail: %s",aux.email); fprintf(ponteiroArquivo,"\nTelefone: %d",aux.telefone); fprintf(ponteiroArquivo,"\nRua: %s",aux.rua); fprintf(ponteiroArquivo,"\nNumero: %d",aux.numero); fprintf(ponteiroArquivo,"\nBairro: %s",aux.bairro); fprintf(ponteiroArquivo,"\nCidade: %s",aux.cidade); fprintf(ponteiroArquivo,"\nUF: %s",aux.uf); fclose(ponteiroArquivo);//fecha o arquivo break; case 2:{ ponteiroArquivo = fopen("arquivo.txt", "r"); if (!ponteiroArquivo) printf("\nArquivo Inexistente!"); else { /* fread() retorna 1 enquanto existir dado e 0 caso seja NULL. Então estamos dizendo aqui: Enquanto o retorno não for 0... */ while (!fread (&_cadastro, sizeof(struct cadastro), 1, ponteiroArquivo)) { printf("\nNOME: %s", aux.nome); printf("\nRUA: %s", aux.rua); printf("\nNUMERO: %i", aux.numero); printf("\nBAIRRO: %s", aux.bairro); printf("\nCIDADE: %s", aux.cidade); printf("\nUF: %s", aux.uf); printf("\nTELEFONE: %s", aux.telefone); printf("\nEMAIL: %s", aux.email); } fclose (ponteiroArquivo); } break; } fclose(ponteiroArquivo); break; case 3: printf("Sair, foi selecionado.\n"); exit(0); break; } } system("pause"); return 0; } E da o seguinte erro: In function `int main()': 93 `_cadastro' undeclared (first use this function) (Each undeclared identifier is reported only once for each function it appears in.) :( Compartilhar este post Link para o post Compartilhar em outros sites
reebr 94 Denunciar post Postado Julho 1, 2013 while (!fread (&aux, sizeof(struct cadastro), 1, ponteiroArquivo)) Mude de _cadastro para aux. Compartilhar este post Link para o post Compartilhar em outros sites
btmvdr 0 Denunciar post Postado Julho 1, 2013 Mudei pra aux. Só que agora quando aperto a opção 2 pra exibir a lista de alunos, não aparece nada, volta pro menu pra selecionar a opção ): Compartilhar este post Link para o post Compartilhar em outros sites
reebr 94 Denunciar post Postado Julho 1, 2013 while (fread (&aux, sizeof(struct cadastro), 1, ponteiroArquivo)) Tire o "!" do fread. E tire aquele " fclose(ponteiroArquivo); break ". Você está fechando o arquivo duas vezes. Compartilhar este post Link para o post Compartilhar em outros sites
btmvdr 0 Denunciar post Postado Julho 1, 2013 É o último '' fclose(ponteiroArquivo); break; '' que tem que tirar, certo? Compartilhar este post Link para o post Compartilhar em outros sites
reebr 94 Denunciar post Postado Julho 1, 2013 } fclose (ponteiroArquivo); } break; } fclose(ponteiroArquivo); break; case 3: Compartilhar este post Link para o post Compartilhar em outros sites
btmvdr 0 Denunciar post Postado Julho 1, 2013 Tirei o que você falou e continua sem imprimir nada na tela. Mas no documento de texto que ele cria, fica tudo armazenado certo :/ O código tá assim, oh. Fiz algo errado com as mudanças que você mandou? #include<stdio.h> #include<stdlib.h> struct cadastro{ char nome[50]; char rua[50]; int numero; char bairro[30]; char cidade[20]; char uf[3]; int telefone; char email[30]; }; int main(){ struct cadastro aux; FILE *ponteiroArquivo; int menu; while (menu!=5){ printf("\n\n"); printf("Cadastro de alunos:\n"); printf("1 - Cadastrar Aluno.\n"); printf("2 - Exibir lista de alunos.\n"); printf("3 - Sair.\n"); printf("\n\n"); scanf("%d",&menu); switch(menu){ case 1: printf("Inserir aluno, foi selecionado.\n"); ponteiroArquivo=(fopen("arquivo.txt","a")); // "a" - cria um arquivo novo, ou modifica um ja existente. getchar(); printf("Digite seu nome: "); fgets (aux.nome, 50 ,stdin); printf("Email: "); fgets (aux.email , 30 ,stdin); printf("Telefone: "); scanf ("%d",&aux.telefone); getchar(); printf("Rua: "); fgets (aux.rua, 50 ,stdin); printf("Numero: "); scanf ("%d",&aux.numero); getchar(); printf("Bairro: "); fgets (aux.bairro, 30 ,stdin); printf("Cidade: "); fgets (aux.cidade, 20 ,stdin); printf("UF: "); fgets (aux.uf , 3 ,stdin); getchar(); //grava os dados no arquivo com fprintf fprintf(ponteiroArquivo,"\nNome: %s",aux.nome); fprintf(ponteiroArquivo,"\nEmail: %s",aux.email); fprintf(ponteiroArquivo,"\nTelefone: %d",aux.telefone); fprintf(ponteiroArquivo,"\nRua: %s",aux.rua); fprintf(ponteiroArquivo,"\nNumero: %d",aux.numero); fprintf(ponteiroArquivo,"\nBairro: %s",aux.bairro); fprintf(ponteiroArquivo,"\nCidade: %s",aux.cidade); fprintf(ponteiroArquivo,"\nUF: %s",aux.uf); fclose(ponteiroArquivo);//fecha o arquivo break; case 2:{ printf("Exibir lista de alunos, foi selecionado.\n"); ponteiroArquivo = fopen("arquivo.txt", "r"); if (!ponteiroArquivo) printf("\nArquivo Inexistente!"); else { /* fread() retorna 1 enquanto existir dado e 0 caso seja NULL. Então estamos dizendo aqui: Enquanto o retorno não for 0... */ while (fread (&aux, sizeof(struct cadastro), 1, ponteiroArquivo)) { printf("\nNOME: %s", aux.nome); printf("\nEMAIL: %s", aux.email); printf("\nTELEFONE: %d", aux.telefone); printf("\nRUA: %s", aux.rua); printf("\nNUMERO: %d", aux.numero); printf("\nBAIRRO: %s", aux.bairro); printf("\nCIDADE: %s", aux.cidade); printf("\nUF: %s", aux.uf); break; case 3: printf("Sair, foi selecionado.\n"); exit(0); break; } } system("pause"); return 0; }}}} Compartilhar este post Link para o post Compartilhar em outros sites
reebr 94 Denunciar post Postado Julho 2, 2013 Eu não entendi como esse código seu rodou, estão faltando duas chaves no final do "case 2: "... Olhei o seu código e está (aparentemente) certo. Está semelhante ao que fiz para testar, então creio que o problema seja somente as chaves que esqueceu. #include <stdio.h> #include <stdlib.h> #define TEMP 128 struct endereco { char rua [TEMP], bairro [TEMP], cidade [TEMP], uf [TEMP]; int numero; }; struct info { char nome [TEMP], email [TEMP], telefone [TEMP]; struct endereco end; }; int setData (void) { struct info _info; getchar(); // sujeira. printf("\nNome: "); fgets(_info.nome, TEMP, stdin); printf("\nEmail: "); fgets(_info.email, TEMP, stdin); printf("\nTelefone: "); fgets(_info.telefone, TEMP, stdin); printf("\nRua: "); fgets(_info.end.rua, TEMP, stdin); printf("\nNumero: "); scanf("%i", &_info.end.numero); getchar(); // sujeira. printf("\nBairro: "); fgets(_info.end.bairro, TEMP, stdin); printf("\nCidade: "); fgets(_info.end.cidade, TEMP, stdin); printf("\nUF: "); fgets(_info.end.uf, TEMP, stdin); FILE *file; file = fopen("arquivo.txt", "a"); fwrite (&_info, sizeof(struct info), 1, file); fclose (file); return 0; } int getData (void) { FILE *file; file = fopen ("arquivo.txt", "r"); if (!file) return 1; else { struct info _info; while (fread(&_info, sizeof(struct info), 1, file)) { printf("\nNome: %s", _info.nome); printf("\nEmail: %s", _info.email); printf("\nTelefone: %s", _info.telefone); printf("\nRua: %s", _info.end.rua); printf("\nNumero: %i", _info.end.numero); printf("\nBairro: %s", _info.end.bairro); printf("\nCidade: %s", _info.end.cidade); printf("\nUF: %s", _info.end.uf); } fclose(file); } return 0; } int main (void) { int opt; while (1) { do{ printf("\n\n1 - Cadastrar Aluno.\n"); printf("\n2 - Exibir lista de alunos.\n"); printf("\n3 - Sair.\n"); scanf("%i", &opt); } while ((opt < 1) && (opt > 3)); switch (opt) { case 1: if(setData() == 0) printf("\nAluno cadastrado!"); break; case 2: if(getData() == 1) printf("\nErro ao abrir o arquivo!"); break; case 3: exit(0); } } } Compartilhar este post Link para o post Compartilhar em outros sites
btmvdr 0 Denunciar post Postado Julho 2, 2013 Assim do forma que você fez, ele funciona, muuuito obrigado!! :worship: Mas eu fui olhar o arquivo txt que ele cria, e agora está dando problema nele, não fica mais os cadastrados, agora fica ando coisas assim: fulano a b a l h o 1 . e x e D àOD D X@D ˆü( ÿ ¤ü( D ÀGD ¤ü( ô:`w ·–L ü( ‰ôÜv Úv›ôÜv ¯ÚvO–Lð h fulano@hotmail.com »?äv×æd:þÿÿÿ¯Úv³Ãîv €@÷v · ÷v ÷v lü( )òívü h ¬ü( Äîv ÖÂîv%L”L22448877 Ðh |ü( ðþ( ÕŒïvQrR:þÿÿÿ )÷vÈü( ÅÄîv )÷vØü( _ºñv )÷v )÷vo d ¼þ( jìîv )÷v )÷v+íîv$ÿ( Ð+÷vHh fulanos ÿ( ^ Dÿ( h Xý( 00@ #;` )÷v ÿ Ph A DD œý( ©¥Ûv D DD Ph þ( h'h fulaninho 8ED ¨DD ¸ý( ˆh À Ðý( B u@ À Ä h aaaa Ä h h'h c'h aaa h GCC@ý( H-2-fula dw‹H þÿÿÿ$ h b'h \þ( ‡òívòívÕN”L $ ÷v ÷v$ Xþ( )òív h ˜þ( 1Aîv AîvN”L )÷v Øh fn ÿ( ÕŒïvñR: ;÷v @ )÷v´þ( B¤ívX÷vÀþ( üñív ÿ( –hôv )÷v€hôv‰O”L @ Ôþ( ‘O”LÄÿ( ÕŒïv)ØH:þÿÿÿk :unsure: Aaah, e deixa eu te perguntar uma coisinha. :pinch: Tem como fazer pro primeiro cadastrado, mostrar matricula 1, pro segundo cadastrado matricula 2, pro terceiro cadastrado matricula 3 e assim por diante? Tem que botar algum contador ou algo assim pra ele mostrar isso? Obrigado!! Compartilhar este post Link para o post Compartilhar em outros sites
reebr 94 Denunciar post Postado Julho 2, 2013 O importante será o arquivo de texto ou o que será exibido na tela do console? Sobre gerar código automático: Sim, use a função fseek para voltar o ponteiro dentro do arquivo de texto. Pegue o último número cadastrado e acrescente +1. -> http://www.cplusplus.com/reference/cstdio/fseek/ Compartilhar este post Link para o post Compartilhar em outros sites
btmvdr 0 Denunciar post Postado Julho 2, 2013 Os dois, tem que está mostrando na tela pro usuário os cadastrados e dentro do arquivo de texto tem que constar todos os cadastrados :/ Ok, obrigado, vou tentar fazer com fseek então o/ Compartilhar este post Link para o post Compartilhar em outros sites
reebr 94 Denunciar post Postado Julho 3, 2013 Normalmente, informações de cadastro são armazenadas em um arquivo de forma que outras pessoas não possam ler o seu conteúdo. Se quiser que o conteúdo do arquivo possa ser lido, use as funções: fputs() e fgets(), salvando de string em string. Porém você precisará criar um algoritmo para verificar quando uma linha e quando um registro termina. Bom, crie um campo inteiro dentro da struct para salvar o código de cada matricula. Você vai precisar ter ele salvo em algum lugar, para poder acessá-lo e acrescentar +1 para a próxima matricula. struct info { char nome [TEMP], email [TEMP], telefone [TEMP]; int codigo; // <-- struct endereco end; }; Faz tempo que não utilizo a função fseek, mas creio que para gerar um código sequencial, basta criar uma função assim: *não testado. int NovoCodigo (void) { FILE *file; file = fopen("arquivo.txt", "rb"); if (!file) return 1; // é o primeiro registro. else { struct info _info; fseek (file, -1 * sizeof(struct info), SEEK_END); int codigo = _info.codigo; // pega o número do último registro... fclose(file); } return codigo + 1; //... e acrescenta a ele mais um. } Assim, bastaria chamar a função de gerar código dentro da função de cadastro. Algo assim: int setData (void) { struct info _info; getchar(); _info.codigo = NovoCodigo(); // pega o retorno da função e atribui ao campo codigo. printf("Matricula numero: %i", _info.codigo); // ... resto do código } =) Compartilhar este post Link para o post Compartilhar em outros sites