У меня крошечная проблема. Я хочу передать строку (символьный указатель) в функцию. В функции я могу просто передать первую позицию указателя на символ.
Вот код-фрагмент:
void put(struct DataItem* hashArray[SIZE], char* key){
struct DataItem* item = malloc(sizeof(struct DataItem));
item->key = *key;
item->value = 1;
Итак, когда я вызываю отладчик и проверяю значение «item-> key». Тогда это просто первая позиция указателя на символ.
Например, я прохожу "524234"
Тогда пункт-> ключ просто "5"
EDIT:
Спасибо за ответ
Вы имеете в виду, что я должен использовать strcpy вот так
void put(struct DataItem* hashArray[SIZE], char* key){
struct DataItem* item = malloc(sizeof(struct DataItem));
strcpy(item->key,key);
item->value = 1;
это не работает.
даже если я попробую с указателем, как это
void put(struct DataItem* hashArray[SIZE], char* key){
struct DataItem* item = malloc(sizeof(struct DataItem));
strcpy(item->key,*key);
item->value = 1;
В первой ситуации компилятор говорит
16: предупреждение: передача аргумента 1 из 'strcpy' делает указатель из целого числа без приведения [-Wint-преобразование]
Во второй ситуации (с *). компилятор говорит:
16: предупреждение: передача аргумента 1 из 'strcpy' делает указатель из целого числа без приведения [-Wint-преобразование]
предупреждение: передача аргумента 1 в 'strcpy' делает указатель из целого числа без приведения [-Wint-преобразование]
РЕДАКТИРОВАТЬ:
Вот структура DataItem
struct DataItem {
char key;
int value;
};