Как я могу преобразовать строку со смешанным регистром в строчную строку в C?
Как мне в нижнем регистре строку в C?
Ответ 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]) {}
Но, ну, это вроде как взрывается, если вы кормите его некоторыми символами/цифрами, и вообще это зло. Хороший вопрос интервью.