Vilarim 0 Denunciar post Postado Março 20, 2010 Alguem sabe me explicar como eu resolvo esse erro? "too many arguments to function `char* gets(char*)". É a primeira vez q vejo esse erro. #include<stdio.h> #include<stdlib.h> #include<string.h> #define MAX 9 #define MIN 9 #define TAM 100 struct aluno //estrutura do tipo aluno { long ra[MAX][MIN]; char nome[50]; char curso[25]; }; //fim do struct struct aluno regaluno[100]; // uma matriz de estrutura tipo aluno regaluno int menu(); void CADASTRO(void); void CONSULTA(void); void EXCLUIR(void); int continuar; int cont=0; int main() // inicio do int main() { int opcoes; do { opcoes=menu(); //chama a opção menu switch (opcoes){ case 1: CADASTRO(); break; case 2: CONSULTA(); break; case 3: EXCLUIR(); break; case 4: exit(0); break; }// fecha o switch }// fecha DO while (opcoes !=4); printf("\n\n"); return(0); } // fim do int main(); int menu(void) // função do menu { int x; // vai ler as opções do { system("cls"); // limpa a tela printf("\n\n"); // pula duas linhas printf(" \t\t 1 %c CADASTRO DE ALUNO \n\n\t\t 2 %c CONSULTA \n\n\t\t 3 %c EXCLUIR \n\n\t\t 4 %c Sair"); scanf("%d",&x); }// fecha DO while ((x<1) || (x>4)); return x; }// fecha int main(void) void CADASTRO(void) // função de cadastro de aluno { int i=0; if (cont < TAM) { for (i=0; i<TAM; i++) { system("cls"); printf("\n\n"); printf(" \t\t CADASTRO DE ALUNOS \n\n"); printf("\n\n"); printf ("Prencha com cuidado \n\n"); printf("\n RA : \n\n"); scanf("%ld",®aluno[i].ra); if ( (regaluno[i].ra==regaluno[i].ra)) { printf("\n\n\t\t RA ja cadastrado\n\n"); system("cls"); printf("Deseja cadastrar outro aulo?\n\n"); printf("1 - SIM \n\n 2 - NAO"); scanf("%d",&continuar); while( continuar!=1 && continuar!=2) { system("cls"); printf("Deseja continuar? \n\n"); printf("1 - SIM \n\n 2 - NAO"); scanf("%d",&continuar); }//fecha while if (continuar==1) { CADASTRO(); }//fecha if else fflush(stdin); // limpa o buffer da teclado printf("\n\n"); printf("Aluno : "); gets("%s", ®aluno[i].nome); printf("\n\n"); fflush(stdin); printf("\n\n"); printf("Curso :") gets("%s",regalunos[i].curso); printf("\n\n"); system("cls"); printf("\n\n"); printf("\t\t Aluno cadastrado com Sucesso!!!"); printf("\n\n"); printf("\n\n"); system("pause"); printf("\n\n"); system("cls"); i++; cont++; break; } //fim do if } }//fim do if }// fim cadastro if (cont < TAM) { system("cls"); printf("Deseja cadastrar outro aulo?\n\n"); printf("1 - SIM \n\n 2 - NAO"); scanf("%d",&continuar); while( continuar!=1 && continuar!=2) { system("cls"); printf("Deseja continuar? \n\n"); printf("1 - SIM \n\n 2 - NAO"); scanf("%d",&continuar); }//fim do while if (continuar==1) { CADASTRAMENTO(); }//fecha if }//fim do if if (cont = TAM){ printf("Matriz cheia!!! Aumente seu tamanho para novos cadastro"); system("pause"); }//fim do if Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Março 20, 2010 Sim. Tem um jeito bem direto: não usar a função gets. Botando em palavras simples: ela é um lixo. Você pode enfrentar problemas de buffer overflow (e pelo que eu vi em papers de exploit, não é difícil usar isso p/ redirecionar p/ outro endereço de memória e executar um código arbitrário ou 'sequestrar' o root). E parece que para o próximo padrão da linguagem C vão remover ela (Deus existe...) Se o protótipo da função é `char* gets(char*)`, quantos argumentos você acha que ela aceita? Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Março 21, 2010 Meu caro... Você chegou a ler a mensagem de erro ou só copiou e colou aqui? Você tem certeza que quer aprender a programar? É que assim fica difícil! Compartilhar este post Link para o post Compartilhar em outros sites