Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: anaeldi en 4 Marzo 2018, 22:36 pm



Título: Error al comparar una cadena con una matriz
Publicado por: anaeldi en 4 Marzo 2018, 22:36 pm
Estaba programando este código y cuando lo compile me marco un error que dice: "[Error] invalid conversion from 'char' to 'const char*' [-fpermissive]"

Y no se como solucionarlo.

Lo que hace este programa es un sistema básico de altas, bajas y consultas.


Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. struct Tadress{
  5. char streetNo[50];
  6. char colonia[40];
  7. char codP[8];
  8. char city[20];
  9. char tel[12];
  10. };
  11. struct Templ{
  12. int idEmpl;
  13. char entName[60];
  14. char depar[40];
  15. Tadress direc;
  16. float sal;
  17. };
  18.  
  19. void altas(char pers[100][9],Templ& ppl, int& lim);
  20. void bajas(char pers[100][9], int& lim);
  21. void listado(char pers[100][9], int& lim);
  22.  
  23. int main () {
  24. char personal[100][9];
  25. int op,lim=0;
  26. Templ ppl;
  27. ppl.idEmpl=1;
  28.  
  29. do{
  30. printf("EMPRESA\n\n1 ALTAS\n2 BAJAS\n3 CONSULTAS\n4 SALIR\nOpcion: ");
  31. scanf("%i", &op);
  32.  
  33. switch(op){
  34. case 1:
  35. altas(personal,ppl,lim);
  36. break;
  37. case 2:
  38. bajas(personal,lim);
  39. break;
  40. case 3:
  41. listado(personal,lim);
  42. break;
  43. }
  44. }while(op<4);
  45. }
  46. void altas(char pers[100][9],Templ& ppl, int& lim){
  47.  
  48. for(int i=0;i<lim;i++){
  49. printf("\nALTAS\n\nNo. Empleado: %i",ppl.idEmpl);
  50. pers[i][0]=ppl.idEmpl;
  51. ppl.idEmpl++;
  52.  
  53. printf("\nIngresar el nombre del empleado: ");
  54. fflush(stdin);
  55. gets(ppl.entName);
  56. strcpy(&pers[i][1], ppl.entName);
  57.  
  58. printf("\nIngresar el nombre del departamento: ");
  59. fflush(stdin);
  60. gets(ppl.depar);
  61. strcpy(&pers[i][2], ppl.depar);
  62.  
  63. printf("\nDireccion\n Calle y numero: ");
  64. fflush(stdin);
  65. gets(ppl.direc.streetNo);
  66. strcpy(&pers[i][3], ppl.direc.streetNo);
  67.  
  68. printf("\n Colonia: ");
  69. fflush(stdin);
  70. gets(ppl.direc.colonia);
  71. strcpy(&pers[i][4], ppl.direc.colonia);
  72.  
  73. printf("\n Codigo Postal: ");
  74. fflush(stdin);
  75. gets(ppl.direc.codP);
  76. strcpy(&pers[i][5], ppl.direc.codP);
  77.  
  78. printf("\n Ciudad: ");
  79. fflush(stdin);
  80. gets(ppl.direc.city);
  81. strcpy(&pers[i][6], ppl.direc.city);
  82.  
  83. printf("\n Telefono: ");
  84. fflush(stdin);
  85. gets(ppl.direc.tel);
  86. strcpy(&pers[i][7], ppl.direc.tel);
  87.  
  88. printf("\n Ingresar el salario mensual del trabajador: ");
  89. scanf("%f", &ppl.sal);
  90. pers[i][8]=ppl.sal;
  91.  
  92. }
  93. lim++;
  94. }
  95.  
  96. void bajas(char pers[100][9], int& lim){
  97. int idBaja;
  98. printf("\nBAJAS\n\nIngresar el ID a dar de baja: ");
  99. scanf("%i", &idBaja);
  100. lim--;
  101. for(int i=idBaja-1;i<lim;i++){
  102. for(int j=0;j<9;j++){
  103. pers[i][j]=pers[i+1][j];
  104. }
  105. }
  106. }
  107.  
  108.  
  109. void listado(char pers[100][9], int& lim){
  110. char busqD[40];
  111. printf("\nCONSULTAS\n\nIngresar el nombre del departamento: ");
  112. fflush(stdin);
  113. gets(busqD);
  114.  
  115. printf("\n\nID EMPLEADO\tNOMBRE\t\tSALARIO");
  116. for(int i=0;i<lim;i++){
  117.    for(int j=0;j<9;j++){
  118.        [color=red]if(strcmp(busqD, pers[i][2]) == 0){<-- ERROR[/color]
  119.            printf("\n%i\t %s\t %.2",pers[i][0],pers[i][1],pers[i][8]);
  120.        }
  121.    }
  122. }


Título: Re: Error al comparar una cadena con una matriz
Publicado por: Kenji-chan en 4 Marzo 2018, 23:28 pm
en la linea 118
Código
  1. strcmp(busqD, pers[i][2])
le estas pasando la posicion de un carácter lo que tienes que hacer es
Código
  1. strcmp(busqD, pers[i])
  2.