Member 13404013 Ответов: 3

Почему я не могу назначить символ моей переменной struct?


Я пытаюсь назначить один символ моей структурной переменной 'autocorrect', но она не позволяет мне и выдает эту ошибку:

главная.с:134:12: ошибка: ожидается идентификатор или ‘(’ перед ‘.’ маркер
Параметры.автозамена ='Н';

Я не понимаю почему.

Что я уже пробовал:

typedef struct Settings
{
	char* dict_name;
	int max_difference;
	char autocorrect;
}Settings;


if(strstr(str, "autocorrect = yes"))
		{
			Settings.autocorrect = (char*)malloc(sizeof(char));
			Settings.autocorrect = 'y';
		}
		else if(strstr(str, "autocorrect = no"))
		{
			Settings.autocorrect = (char*)malloc(sizeof(char));
			Settings.autocorrect ='n';
		}
	}

3 Ответов

Рейтинг:
26

OriginalGriff

Настройки-это определение структуры, а не переменная, которая может содержать данные: вам нужно создать переменную для хранения структуры настроек, а затем использовать ее для доступа к полям:

Settings set;
set.autocorrect = 'y';
Или
Settings *set = (Settings*) malloc(sizeof(Settings));
set->autocorrect = 'y';


Рейтинг:
2

Richard MacCutchan

Вы заявили: autocorrect как персонаж и все же вы пытаетесь присвоить себе char* к нему. Затем вы сразу же попытаетесь перезаписать указатель символом. Измените свой код на:

if(strstr(str, "autocorrect = yes"))
    {
        // space is automatically reserved for the character variable.
        Settings.autocorrect = 'y';
    }
    else if(strstr(str, "autocorrect = no"))
    {
        Settings.autocorrect ='n';
    }
}


Рейтинг:
1

Michael Haephrati

Вам не нужно выделять память для одного символа. Только для строки с нулевым завершением.
Снимите крышку

malloc()
звоните, и это сработает.