C++: Перевести строку в нижний регистр.
08.12.2011
В си есть функция для перевода в нижний регистр strlwr(), но можно написать и собственную реализацию:
#include "stdafx.h"
#include "locale.h"
#include "string.h"
void main()
{
char string[255];
setlocale(0,"Russian");
printf("Введите слово:\n");
gets(string);
for(int i=0;i<strlen(string);i++)
{
if(string[i]>='A' && string[i]<='Z')
{
string[i]+=32;
}
}
printf("%s \n",string);
}
крайне рекомендую придерживаться какого-либо стиля программирования (java/GNU/etc prgramming style).
не смешивайте C и C++ это весьма разные языки.
в этой программе допущена весьма значительная ошибка, превращающая асимптотику O(N) в O(N^2).
функция length(s) находит длину строки примерно таким способом:
while(s[count] != '\0') { ++count; }очевидно считать в цикле каждый раз длину строки долго.
решение:
L = length(s);
цикл до L;
так же настоятельно рекомендую переходить на чистый С++.
http://www.cplusplus.com/reference/string/string/ — плюсовые стринги имеют гораздо более удобный интерфейс.
Можно и перейти. Согласен, что в C++ строки лучше. В чистом си нет понятия строки. Есть массив символов и всё…
Но иногда приходится работать и с ним. Однако, и в нативном си можно что-то улучшить, например введя динамическую память.
Про ошибку: в большом проекте — да. Но здесь это настолько не важно…
Но да, вы правы.