Использование toupper со структурой в C

Я пытаюсь сделать так, чтобы пользователь вводил свою информацию. Как государство, например. Мне нужно обработать эту аббревиатуру штата и вывести ее заглавными буквами. Я не понимаю, как это сделать, потому что использую структуры. Когда я использую то, что я использую ниже, он говорит мне, что они несовместимы, и это не работает. Что мне делать по-другому. Я пробовал почти все. Это в С.

for (i = 0; i < 3 != '\0'; i++) {
    people[i].state = toupper(people[i].state);
}

person Drew    schedule 21.02.2017    source источник
comment
i < 3 != '\0' что это?   -  person Sourav Ghosh    schedule 21.02.2017
comment
toupper() работает с одним персонажем за раз. Трудно быть уверенным, потому что вы не дали определение своей структуры, но похоже, что вы пытаетесь применить его ко всей строке.   -  person John Bollinger    schedule 21.02.2017
comment
@SouravGhosh Самый причудливый способ проверить, меньше ли i, чем 3, который я когда-либо видел.   -  person Eugene Sh.    schedule 21.02.2017
comment
@ЕвгенийШ. Верно, но я все еще подозреваю, что это не было целью этого кода. Ой.   -  person Andrew Henle    schedule 21.02.2017
comment
Для будущих вопросов: не то, что Использование toupper() со структурой не имеет причин быть чем-то особенным, toupper() берет символ и возвращает его верхнийрегистр, и все. Неважно, откуда взялся персонаж.   -  person Iharob Al Asimi    schedule 21.02.2017


Ответы (1)


Кажется, вы имеете в виду следующее

for ( i = 0; i < 3; i++ )
{
    for ( char *p = people[i].state; *p; ++p ) *p = toupper( ( unsigned char )*p );
}

Или, если у вас есть один объект типа структуры, то что-то вроде

for ( i = 0; i < 3; i++ )
{
    people.state[i] = toupper( ( unsigned char )people.state[i] );
}

или даже

for ( i = 0; i < 3 && people.state[i] != '\0'; i++ )
{
    people.state[i] = toupper( ( unsigned char )people.state[i] );
}
person Vlad from Moscow    schedule 21.02.2017
comment
@ J.Piquard Это не стандартная функция C. - person Vlad from Moscow; 21.02.2017
comment
comment
Когда я помещаю любой из них, он дает мне сообщение об ошибке [Ошибка]: несовместимые типы в назначении - person Drew; 22.02.2017
comment
@Drew Какие бывают люди и государства? - person Vlad from Moscow; 22.02.2017
comment
@vladfromMoscow Это тип персонажа в структуре. Мне нужно вывести это как две заглавные буквы. ‹pre› ‹code› #include ‹stdio.h› #include ‹ctype.h› struct info { char full_name[35]; адрес символа [50]; чар город [25]; состояние char [3]; длинный почтовый индекс; инт возраст; } int main() { for (i = 0; i ‹ 3; ++i) { people[i].state = toupper(people[i].state); } - person Drew; 24.02.2017