Сердцем - в могиле, душою - в тюрьме
Здравствуйте. Возникла такая проблема - в задаче необходимо использовать массив строк. Указателей на указатели боюсь как огня, по дуроости взялся использовать структуры. Но судя по всему не вполне себе понимаю как к ним происходит обращение, потому что компилятор ругается что в strcmp отдаеться не то, что ему надо...
Собственно сама структура
имеется так же массив этих структур:
struct string * str_to_compare = (struct string*) calloc(sizeof(struct string), n);
и strcmp на который и ругаются, где собственно написано:
result = strcmp(str_to_compare[0].s,str_to_compare[i].s);
Подскажите пожалуйста в чем я не прав?
Собственно сама структура
имеется так же массив этих структур:
struct string * str_to_compare = (struct string*) calloc(sizeof(struct string), n);
и strcmp на который и ругаются, где собственно написано:
result = strcmp(str_to_compare[0].s,str_to_compare[i].s);
Подскажите пожалуйста в чем я не прав?
Боишься указателей на указатели?
Может тогда вместо char* используй string?
Со string вообще, ИМХО, удобнее работать (только подключи тогда библиотеку string.h)
По структурам:
1) Зачем тебе писать: struct string{char * s[MAXSTRLENGTH];}; ?
Ты, имхо, себе только работы добавляешь. У тебя в структуре только один "элемент".
С указателями было бы проще...
2) "struct string * str_to_compare = (struct string*) calloc(sizeof(struct string), n);"
struct - это ключевое слово. под ним записывается имя нового типа, который ты создаешь.
То есть писать его везде не нужно.
3) а ошибка у тебя выдается потому, что ты указал в структуре:
char * s[MAXSTRLENGTH];
зачем тут "*"?
Ты создаешь одномерный массив?
тогда char s[MAXSTRLENGTH]; - это уже он и будет.
Надеюсь я тут тебе не соврал ни в чем =)
а на счет char * s вы полностью правы))) спасибо)
посмотри прокатит или нет)
(и мне тута скинь - работает тогда прога или нет, для моей уверенности))
в принципе должно работать)
а можешь в принципе вместо своей структуры написать как раз:
char* s[maxLength];
как раз нечего боятся - это не указатель на указатель))
а указатель на массив)))
ну дальше просто подогнать чуток надо.
Но это я уверен и сам справишься)
strcmp хочет char*
char* это можно сказать char s[MAXSTRLENGTH]
+ ты их нулями через memset заполни перед тем как в strcmp посылать
SonicCat да там нет звеездочки, это была глупоочепятка)
Да, это недочет с моей стороны)))
Не заметил, что написано С#))
Просто сам на С++ пишу)
То есть "С"?
А чего тогда написано C#?
Пересаживайся с С на что другое.
эх...
но тогда зачем нужно было делать С++?
Явно С++ не хуже С.
мой взгляд, как простого обывателя...
только на уровне перевода могу предполагать.
ну да ладно.
Вообще - Pascal лучший))
особенно free =) *хехех, сколько с ним мук было...*