Сложилась следующая ситуация: есть некий cgi, написанный на языке с. В нем используется тип hostextinfo, объявленный таким образом:
typedef struct hostextinfo_struct{
char *host_name;
char *notes_url;
char *icon_image;
char *vrml_image;
char *gd2_icon_image;
char *icon_image_alt;
int have_2d_coords;
int x_2d;
int y_2d;
int have_3d_coords;
double x_3d;
double y_3d;
double z_3d;
int should_be_drawn;
char *use_new_map;
char *group_hosts;
struct hostextinfo_struct *next;
}hostextinfo;
Есть указатель group_hosts типа char* и структура temp_hostextinfo вышеописанного типа hostextinfo. Когда добавляю в код сравнение strcmp(temp_hostextinfo->group_hosts,group_hosts) cgi-шка виснет. Есть какие-нибудь идеи почему это может происходить?
Здравствуйте, Great_Vova, Вы писали:
G_V>Сложилась следующая ситуация: есть некий cgi, написанный на языке с. В нем используется тип hostextinfo, объявленный таким образом:
G_V>Есть указатель group_hosts типа char* и структура temp_hostextinfo вышеописанного типа hostextinfo. Когда добавляю в код сравнение strcmp(temp_hostextinfo->group_hosts,group_hosts) cgi-шка виснет. Есть какие-нибудь идеи почему это может происходить?
Может быть со строками работаешь неосторожно, мусор в них, например и нету завершающего нуля у строки? Сложно сказать, я бы посмотрел в отладчике на те переменные, что сравниваешь.
G_V>Есть указатель group_hosts типа char* и структура temp_hostextinfo вышеописанного типа hostextinfo. Когда добавляю в код сравнение strcmp(temp_hostextinfo->group_hosts,group_hosts) cgi-шка виснет. Есть какие-нибудь идеи почему это может происходить?
Наверно ты передаешь один и тот же указатель в strcmp, и указатель сей указывает на мусор в памяти, в котором долго не встречается 0.
Здравствуйте, Great_Vova, Вы писали:
G_V>Есть указатель group_hosts типа char* и структура temp_hostextinfo вышеописанного типа hostextinfo. Когда добавляю в код сравнение strcmp(temp_hostextinfo->group_hosts,group_hosts) cgi-шка виснет. Есть какие-нибудь идеи почему это может происходить?
Может быть в строках не встречается символ '\0'? Посмотри в отладчике.