I have a question in my paper. I have 10 employee ids M001,A004,D007,etc...User is inputting one of the the mentioned Ids and if the id is not there it prints id not found. I tired with strcmp and got stuck. Its good if you tell me a way to do it? Thanks, note: i am a beginner in C.I am trying an easy way now it gives the error with the for loop.
subscripted value is neither array nor pointer nor vector
#include<stdio.h>
#include<string.h>
float tSalary(float salary,float bonus);
char searchid(char search);
int main(void)
{
char status,input,search,C,P;
char searchId[8][4]={"M001","A004","D007","D010","D012","Q008","Q015","DE09"};
float salary,bonus,tSalary;
int i,j;
do{
printf("Enter the employee id: ");
scanf("%s", &search);
printf("Enter the job status: ");
scanf("%s", &status);
printf("Enter the salary: ");
scanf("%f", &salary);
for(i=0;i<8;i++){ //This is where all things go wrong
for(j=0;j<4;j++){
if(searchid[i][j]=search){ //the [i] where the subscripted error occurs
printf("Id is valid\n");
}
else printf("Invalid id\n");
}
}
printf("Do you want to enter another record?(Y-Yes/N-No): ");
scanf(" %c", &input);
}while(input=='Y'||input=='y');
return 0;
}
chars==not assignment that is=?searchId. As noted by @LethalProgrammer, the=assignment operator is used instead of the==comparison operator. But, even before this there is big trouble, sincesearchandstatusarechars, but are treated as strings by input code. Ifsearchis a string,==can not be used, butstrcmp()should instead be used.scanf()family of functions: 1) always check the returned value (not the parameter values) to assure the operation was successful. 2) when using the '%s' input/format specifier, always use a MAX CHARACTERS modifier that is on less than the length of the input buffer to avoid buffer overflow. Such overflow results in undefined behavior and can lead to a seg fault event.