В си есть функция для перевода в нижний регистр strlwr(), но можно написать и собственную реализацию:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#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) находит длину строки примерно таким способом:
очевидно считать в цикле каждый раз длину строки долго.
решение:
L = length(s);
цикл до L;
так же настоятельно рекомендую переходить на чистый С++.
http://www.cplusplus.com/reference/string/string/ — плюсовые стринги имеют гораздо более удобный интерфейс.
Можно и перейти. Согласен, что в C++ строки лучше. В чистом си нет понятия строки. Есть массив символов и всё…
Но иногда приходится работать и с ним. Однако, и в нативном си можно что-то улучшить, например введя динамическую память.
Про ошибку: в большом проекте — да. Но здесь это настолько не важно…
Но да, вы правы.