传递arg 1的`puts'使得整数指针没有强制转换

时间:2013-09-11 16:44:57

标签: c pointers casting puts

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;
}

您好:D 这个程序是构建或试图成为一个可以保存联系人的笔记本。 但是我得到了这个警告,当'puts'进入程序时,它会崩溃。 有人可以帮忙吗?

  

[警告]传递`puts'的arg 1会使整数指针不带a   投

感谢。

1 个答案:

答案 0 :(得分:5)

puts(agenda[i].na);

在您的代码中agenda[i].naint。您无法使用puts进行打印,请尝试printf

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

当'puts'进入程序时,它会崩溃。

您正在欺骗puts使用随机整数作为指针。