Сердцем - в могиле, душою - в тюрьме
Здравствуйте. Возникла такая проблема - в задаче необходимо использовать массив строк. Указателей на указатели боюсь как огня, по дуроости взялся использовать структуры. Но судя по всему не вполне себе понимаю как к ним происходит обращение, потому что компилятор ругается что в 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);

Подскажите пожалуйста в чем я не прав?

@темы: Вопрос, C#

Комментарии
01.10.2010 в 15:24

Хочешь чуда? Будь чудом!
в задаче необходимо использовать массив строк.
Боишься указателей на указатели?

Может тогда вместо 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]; - это уже он и будет.


Надеюсь я тут тебе не соврал ни в чем =)
01.10.2010 в 15:30

Сердцем - в могиле, душою - в тюрьме
Catch By Madness ээээм, нам столько char* использовать можно)
01.10.2010 в 15:42

Хочешь чуда? Будь чудом!
я свой пост отредактировал )
01.10.2010 в 15:46

Сердцем - в могиле, душою - в тюрьме
Странно, а нам говорили что либо каждый раз strict писать, лиюбо typedef юзать)))
а на счет char * s вы полностью правы))) спасибо)
01.10.2010 в 15:51

Хочешь чуда? Будь чудом!
а ты для прикола попробуй не писать везде struct.
посмотри прокатит или нет)
(и мне тута скинь - работает тогда прога или нет, для моей уверенности))
в принципе должно работать)

а можешь в принципе вместо своей структуры написать как раз:

char* s[maxLength];

как раз нечего боятся - это не указатель на указатель))
а указатель на массив)))

ну дальше просто подогнать чуток надо.

Но это я уверен и сам справишься)
01.10.2010 в 15:51

А ты уже научился заряжать левой ногой свой телефон?
char * s[MAXSTRLENGTH] это можно сказать char**
strcmp хочет char*
char* это можно сказать char s[MAXSTRLENGTH]

+ ты их нулями через memset заполни перед тем как в strcmp посылать
01.10.2010 в 15:59

Сердцем - в могиле, душою - в тюрьме
Catch By Madness неработает) может вы си++ имеете ввиду?)
SonicCat да там нет звеездочки, это была глупоочепятка)
01.10.2010 в 16:05

Хочешь чуда? Будь чудом!
Долбобог оу.
Да, это недочет с моей стороны)))
Не заметил, что написано С#))

Просто сам на С++ пишу)
01.10.2010 в 16:07

Сердцем - в могиле, душою - в тюрьме
Catch By Madness ну мы к сожалению чистые сишники)
01.10.2010 в 16:08

Хочешь чуда? Будь чудом!
Чистые сишники?
То есть "С"?

А чего тогда написано C#?
01.10.2010 в 16:13

Сердцем - в могиле, душою - в тюрьме
Catch By Madness потому что там нет тэга просто "С") а что такое C# я не знаю) вот и шлепнул)
01.10.2010 в 16:17

Хочешь чуда? Будь чудом!
Ну теперь все стало ясно))

Пересаживайся с С на что другое.
01.10.2010 в 16:31

Сердцем - в могиле, душою - в тюрьме
Catch By Madness ну могу) учебный процесс)))
01.10.2010 в 16:45

Хочешь чуда? Будь чудом!
вот это и называется "образование"...

эх...
01.10.2010 в 17:47

Сердцем - в могиле, душою - в тюрьме
Catch By Madness да ладно, зря вы так) Си в чистом виде тоже очень много где нужен)
01.10.2010 в 17:54

Хочешь чуда? Будь чудом!
может я и не прав.

но тогда зачем нужно было делать С++?

Явно С++ не хуже С.

мой взгляд, как простого обывателя...
01.10.2010 в 21:12

Сердцем - в могиле, душою - в тюрьме
Catch By Madness си ++ уровнем выше чем си, как следствие упрощает написание кода, добавляет много вкуснных фенечек, но теряет ряд вещей нужных для написания базисных систем, типа деконвертеров...
01.10.2010 в 21:21

Хочешь чуда? Будь чудом!
ояебу, что такое деконвертер.
только на уровне перевода могу предполагать.

ну да ладно.

Вообще - Pascal лучший))
особенно free =) *хехех, сколько с ним мук было...*