Доступ к строке различается в зависимости от того, находится она во флэш-памяти или в ОЗУ (я думаю, что строки могут быть скопированы в ОЗУ при загрузке, но я не уверен). Однако, учитывая, что это домашнее задание, у вас, вероятно, есть прямой доступ к строке в оперативной памяти. Как указывает @EnabrenTane, вы можете просто перевернуть бит 5 байта символа, чтобы изменить регистр (прочитайте превосходную страницу ASCII Википедии , чтобы узнать больше о байтовых кодах ASCII). Итак, если вам нужно было сделать это в C:
char the_string[6] = "foobar" // assuming string is created like this
int l = 6 * sizeof(char); // the length of the string
for(int i=0; i<l; i++) {
char* c = the_string + i; // grab char[i] of the string
*char = *char ^ 0x20; // flip the case
}
(я не пробовал компилировать это, поэтому могут быть ошибки)
Для строк, созданных как та, что выше значения, хранящегося в the_string
, это фактически указатель на адрес первого символа. Чтобы найти определенный символ в этой строке, вы просто добавляете адрес. Чтобы манипулировать строкой, вам нужно разыменовать указатель char*
и - в этом примере - сохранить значение обратно в то же место, переписав исходное значение.