Error al comparar una cadena con una matriz

Iniciado por anaeldi, 4 Marzo 2018, 22:36 PM

0 Miembros y 1 Visitante están viendo este tema.

anaeldi

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 (cpp) [Seleccionar]
#include <stdio.h>
#include <string.h>

struct Tadress{
char streetNo[50];
char colonia[40];
char codP[8];
char city[20];
char tel[12];
};
struct Templ{
int idEmpl;
char entName[60];
char depar[40];
Tadress direc;
float sal;
};

void altas(char pers[100][9],Templ& ppl, int& lim);
void bajas(char pers[100][9], int& lim);
void listado(char pers[100][9], int& lim);

int main () {
char personal[100][9];
int op,lim=0;
Templ ppl;
ppl.idEmpl=1;

do{
printf("EMPRESA\n\n1 ALTAS\n2 BAJAS\n3 CONSULTAS\n4 SALIR\nOpcion: ");
scanf("%i", &op);

switch(op){
case 1:
altas(personal,ppl,lim);
break;
case 2:
bajas(personal,lim);
break;
case 3:
listado(personal,lim);
break;
}
}while(op<4);
}
void altas(char pers[100][9],Templ& ppl, int& lim){

for(int i=0;i<lim;i++){
printf("\nALTAS\n\nNo. Empleado: %i",ppl.idEmpl);
pers[i][0]=ppl.idEmpl;
ppl.idEmpl++;

printf("\nIngresar el nombre del empleado: ");
fflush(stdin);
gets(ppl.entName);
strcpy(&pers[i][1], ppl.entName);

printf("\nIngresar el nombre del departamento: ");
fflush(stdin);
gets(ppl.depar);
strcpy(&pers[i][2], ppl.depar);

printf("\nDireccion\n Calle y numero: ");
fflush(stdin);
gets(ppl.direc.streetNo);
strcpy(&pers[i][3], ppl.direc.streetNo);

printf("\n Colonia: ");
fflush(stdin);
gets(ppl.direc.colonia);
strcpy(&pers[i][4], ppl.direc.colonia);

printf("\n Codigo Postal: ");
fflush(stdin);
gets(ppl.direc.codP);
strcpy(&pers[i][5], ppl.direc.codP);

printf("\n Ciudad: ");
fflush(stdin);
gets(ppl.direc.city);
strcpy(&pers[i][6], ppl.direc.city);

printf("\n Telefono: ");
fflush(stdin);
gets(ppl.direc.tel);
strcpy(&pers[i][7], ppl.direc.tel);

printf("\n Ingresar el salario mensual del trabajador: ");
scanf("%f", &ppl.sal);
pers[i][8]=ppl.sal;

}
lim++;
}

void bajas(char pers[100][9], int& lim){
int idBaja;
printf("\nBAJAS\n\nIngresar el ID a dar de baja: ");
scanf("%i", &idBaja);
lim--;
for(int i=idBaja-1;i<lim;i++){
for(int j=0;j<9;j++){
pers[i][j]=pers[i+1][j];
}
}
}


void listado(char pers[100][9], int& lim){
char busqD[40];
printf("\nCONSULTAS\n\nIngresar el nombre del departamento: ");
fflush(stdin);
gets(busqD);

printf("\n\nID EMPLEADO\tNOMBRE\t\tSALARIO");
for(int i=0;i<lim;i++){
    for(int j=0;j<9;j++){
        [color=red]if(strcmp(busqD, pers[i][2]) == 0){<-- ERROR[/color]
            printf("\n%i\t %s\t %.2",pers[i][0],pers[i][1],pers[i][8]);
        }
    }
}

Kenji-chan

#1
en la linea 118
strcmp(busqD, pers[i][2])
le estas pasando la posicion de un carácter lo que tienes que hacer es

strcmp(busqD, pers[i])