Можно ли (и как это сделать) в языке Си в оператор if прописать массив?
Мне нужно сделать так, чтобы когда пользователь в консоль "ru", "uz" или "en", дальнейшая информация шла соответственно либо на русском, либо на узбекском/английском. Как это сделать? Я пытаюсь провернуть это через оператор if, вот как это выглядит:
Не знаю как правильно это сделать. Буду безмерно благодарен образцу правильного кода и подробному разъяснению, если так нельзя через if сделать, то как тогда?
Так делать нельзя. С - язык низкоуровневый. Хотите таких сравнений - Вам в Perl, Python или еще чего.
- scanf у Вас притащил с собой '\n' :)
- строка берется через gets(), если ее длина > 2, последний символ забивается '\0'
- дальше идет if конечно же, но if, сравнивающий код возврата от strncmp() - совпало - наш язык, не совпало - не наш.
- Обязательно проверить на то, что юзер ввел лабуду!
А как сравнение строк здесь поможет? Образец кода, где с помощью scanf нужно вводить "ru" или "en" для вывода далее текста на соответствующем языке, был бы очень кстати
То есть вот этим: if( lang[1] == "ru") вы хотели сделать не сравнение строк?
Это так не работает. Начнём с того, что нельзя написать char lang[1] = "ru";, потому что char lang[1] - это объявление массива длиной в 1 байт. И строки в С - это просто указатели, их нельзя сравнивать через "==", потому что вы будете сравнивать адреса, а не содержимое.