Мы работаем на итеративном сервере в C, который можно использовать с клиентом telnet в UNIX. Наш код работает нормально, за исключением случаев, когда выполняется сравнение строк с использованием strcmp (). Мы пробовали исправить это, используя \ n как предложено на этом форуме. Код ниже работает отлично. Мы даже вводим метод checkInput(in,out)
while(read(fileDescriptor,in,2000)>0)
{
in[strlen(in)-1]=0;
checkInput(in,out);
write(fileDescriptor,out,strlen(out));
}
Когда мы вводим checkInput(in,out)
, мы хотим заключить строку, которую пользователь вводит через telnet, с другой предопределенной строкой. Но мы всегда заканчиваем оператором else, хотя строки twor одинаковы.
void checkInput(char in[],char out[])
{
char tempString[]="GET TEMPERATURE\n";
char buzzer[]="GET BUZZER";
if(strcmp(in,tempString)==0)
{
strcpy(out,"Get Temp!");
//sprintf(out,"%d",temp);
}
else if(strcmp(in,"GET HUMIDITY")==0)
{
strcpy(out,"Get Hum!");
//sprintf(out,"%d",hum);
}
else if(strcmp(in,"GET LIGHT")==0)
{
strcpy(out,"Get Light!");
//sprintf(out,"%d",light);
}
else if(strcmp(in,"GET LED")==0)
{
strcpy(out,"Get LED!");
//sprintf(out,"%d",led);
}
else if(strcmp(in,"GET SOUND")==0)
{
strcpy(out,"Get Sound!");
//sprintf(out,"%d",sound);
}
else if(strncmp(in,buzzer, 11)==0)
{
strcpy(out,"Get Buzzer!");
//sprintf(out,"%d",buzzer);
}
else if(strcmp(in,"exit")==0)
{
strcpy(out,"Exiting... Get Out!");
exit(2);
}
else
{
strcpy(out,"\nDAAAAAMN YOU SERVER!!!!!!!!!\n");
sprintf(out,"%d",strcmp(in,buzzer));
}
}
Любая помощь будет принята с благодарностью! Спасибо!