passing arg 1 of `puts' makes pointer from integer without a cast

5.1k views Asked by At
struct{
char nome[30],rua [50],bairro [20],cidade [30],se [3] ;
int na, exc, numero;
long int CEP;
}typedef endereco;

main(){
       endereco agenda[20];
       int i, j, opc, opc1=0, opc2, eopc ;
       char pnome[30], pbairro[20], pcidade[30], enome[30];

while (opc!=4){
       system("cls");
       printf("Agenda facs, digite a opção: \n|\t1-incluir\t|\n|\t2-Consultar\t|\n|\t3-excluir\t|\n|\t4-sair\t |\nDigite a opção ");
       scanf("%d",&opc);
       fflush(stdin);
       switch (opc){
                    case 1:
                         system("cls");
                         printf("Digite os Dados a seguir para incluir no # %d :\n",opc1+1);
                         agenda[opc1].na=opc1+1;
                         agenda[opc1].exc=0;
                         printf("Digite o nome: ");
                         gets(agenda[opc1].nome);
                         printf("Digite a Rua: ");
                         gets(agenda[opc1].rua);                         
                         printf("Digite o Bairro: ");
                         gets(agenda[opc1].bairro);
                         printf("Digite o numero: ");
                         fflush(stdin);
                         scanf("%d",&agenda[opc1].numero);
                         fflush(stdin);                         
                         printf("Digite a Cidade: ");
                         gets(agenda[opc1].cidade); 
                         printf("Digite a Sigla do Estado: ");
                         gets(agenda[opc1].se);
                         printf("Digite o CEP: ");
                         fflush(stdin);
                         scanf("%d",&agenda[opc1].CEP);
                         fflush(stdin); 
                         opc1++;
                         break;
                    case 2:
                         system("cls");
                         printf("\n|\t1-Nome\t|\n|\t2-Bairro\t|\n|\t3-Cidade\t|\n|\tDigite a opção ");
                         scanf("%d",&opc2);
                         printf("\t|\n");                                       
                         fflush(stdin);                         
                                       switch (opc2){
                                              case 1:
                                                   system("cls");
                                                   printf("Qual o nome a procurar? ");
                                                   gets(pnome);
                                                   for(i=0;i<20;i++){
                                                                     if(strcmp(pnome,agenda[i].nome)==0){
                                                                     printf("\n\tNumero Agenda: ");
                                                                     puts(agenda[i].na);                                                                     printf("\n\tNome: ");
                                                                     printf("\n\tNome: ");                                                                     
                                                                     puts(agenda[i].nome);
                                                                     printf("\n\tRua: ");
                                                                     puts(agenda[i].rua);                         
                                                                     printf("\n\tBairro: ");
                                                                     puts(agenda[i].bairro);
                                                                     printf("\n\tNumero: ");
                                                                     puts(agenda[i].numero);                         
                                                                     printf("\n\tCidade: ");
                                                                     puts(agenda[i].cidade); 
                                                                     printf("\n\tEstado: ");
                                                                     puts(agenda[i].se);
                                                                     printf("\n\tCEP: ");
                                                                     puts(agenda[i].CEP);
                                                                     printf("\n\t______________");}}
                                                   break;                  
                                              case 2:
                                                   system("cls");
                                                   printf("Qual o Bairro a procurar? ");
                                                   gets(pbairro);                                                   
                                                   for(i=0;i<20;i++){
                                                                     if(strcmp(pbairro,agenda[i].bairro)==0){
                                                                     printf("\n\tNumero Agenda: ");
                                                                     puts(agenda[i].na);                                                                     printf("\n\tNome: ");
                                                                     printf("\n\tNome: ");                                                                     
                                                                     puts(agenda[i].nome);
                                                                     printf("\n\tRua: ");
                                                                     puts(agenda[i].rua);                         
                                                                     printf("\n\tBairro: ");
                                                                     puts(agenda[i].bairro);
                                                                     printf("\n\tNumero: ");
                                                                     puts(agenda[i].numero);                         
                                                                     printf("\n\tCidade: ");
                                                                     puts(agenda[i].cidade); 
                                                                     printf("\n\tEstado: ");
                                                                     puts(agenda[i].se);
                                                                     printf("\n\tCEP: ");
                                                                     puts(agenda[i].CEP);
                                                                     printf("\n\t______________");}}
                                                   break;
                                              case 3:
                                                   system("cls");
                                                   printf("Qual a Cidade a procurar? ");
                                                   gets(pcidade);                                                   
                                                   for(i=0;i<20;i++){
                                                                     if(strcmp(pbairro,agenda[i].cidade)==0){
                                                                     printf("\n\tNumero Agenda: ");
                                                                     puts(agenda[i].na);                                                                  
                                                                     printf("\n\tNome: ");                                                                     
                                                                     puts(agenda[i].nome);
                                                                     printf("\n\tRua: ");
                                                                     puts(agenda[i].rua);                         
                                                                     printf("\n\tBairro: ");
                                                                     puts(agenda[i].bairro);
                                                                     printf("\n\tNumero: ");
                                                                     puts(agenda[i].numero);                         
                                                                     printf("\n\tCidade: ");
                                                                     puts(agenda[i].cidade); 
                                                                     printf("\n\tEstado: ");
                                                                     puts(agenda[i].se);
                                                                     printf("\n\tCEP: ");
                                                                     puts(agenda[i].CEP);
                                                                     printf("\n\t______________");}}
                                                   break;}
                    case 3:
                         system("cls");
                         printf("Digite o Numero da Agenda que deseja excluir");
                         gets(enome);
                         for(i=0;i<20;i++){
                                           if(strcmp(enome,agenda[i].nome)==0){
                                           printf("\n\tNumero Agenda: ");
                                           puts(agenda[i].na);                                                                     
                                           printf("\n\tNome: ");                                                                     
                                           puts(agenda[i].nome);
                                           printf("\n\tRua: ");
                                           puts(agenda[i].rua);                         
                                           printf("\n\tBairro: ");
                                           puts(agenda[i].bairro);
                                           printf("\n\tNumero: ");
                                           puts(agenda[i].numero);                         
                                           printf("\n\tCidade: ");
                                           puts(agenda[i].cidade); 
                                           printf("\n\tEstado: ");
                                           puts(agenda[i].se);
                                           printf("\n\tCEP: ");
                                           puts(agenda[i].CEP);
                                           printf("\n\t______________");}}
                         printf("\n\tDigite o Numero Agenda do Nome na qual voce quer excluir: ");
                         fflush(stdin); 
                         scanf("%d",&i);
                         fflush(stdin);
                         if(agenda[i].exc==0){
                                              printf("\n\t%d . %s \n\tDeseja excluir esse contato?\n\t1-Sim\n\t2-Nao\n\tOpcao: ",agenda[i].na,agenda[i].nome);
                                              fflush(stdin);
                                              scanf("%d",&eopc);
                                              fflush(stdin);
                                              switch (eopc){
                                                     case 1:
                                                          agenda[i].exc=1;
                                                          printf("\t\nNumero excluido !");
                                                          break;
                                                     case 2:
                                                          printf("\t\nNumero nao excluido !");
                                                          break;}}}}



  system("PAUSE");  
  return 0;
}

Hello :D This program was build, or trying to, be a notebook that you can save contacts. But i'm getting this warning, and when the 'puts' come in the program, it crashes. Someone can help ?

[Warning] passing arg 1 of `puts' makes pointer from integer without a cast

Thanks.

1

There are 1 answers

6
cnicutar On BEST ANSWER
puts(agenda[i].na);

In your code agenda[i].na is an int. You can't print it with puts, try printf:

printf("%d\n", agenda[i].na);

and when the 'puts' come in the program, it crashes.

You are tricking puts into using a random integer as a pointer.