Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vilarim

too many arguments to function `char* gets(char*)

Recommended Posts

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",&regaluno[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", &regaluno[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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.