Подтвердить что ты не робот

Как мне в нижнем регистре строку в C?

Как я могу преобразовать строку со смешанным регистром в строчную строку в C?

4b9b3361

Ответ 1

Это в стандартной библиотеке, и это самый прямой путь, который я вижу, чтобы реализовать такую функцию. Так что да, просто переберите строку и преобразуйте каждый символ в нижний регистр.

Нечто подобное

#include <ctype.h>

for(int i = 0; str[i]; i++){
  str[i] = tolower(str[i]);
}

или, если вы предпочитаете один вкладыш, вы можете использовать этот вариант JF Sebastian:

for ( ; *p; ++p) *p = tolower(*p);

Ответ 2

для преобразования в нижний регистр эквивалентно биту разгона 0x60:

for(char *p = pstr;*p;++p) *p=*p>0x40&&*p<0x5b?*p|0x60:*p;

(для латинской кодовой страницы, конечно)

Ответ 3

Вы просто имеете дело со строками ASCII и не имеете проблем с локальностью? Тогда да, это был бы хороший способ сделать это.

Ответ 4

Если вам нужна поддержка Unicode в нижнем регистре, посмотрите этот вопрос: Light Unicode Library

Ответ 5

Если мы будем неаккуратно использовать tolower(), сделайте следующее:

char blah[] = "blah blah Blah BLAH blAH\0"; int i=0; while(blah[i]|=' ', blah[++i]) {}

Но, ну, это вроде как взрывается, если вы кормите его некоторыми символами/цифрами, и вообще это зло. Хороший вопрос интервью.