- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
#include <stdio.h>
#include <string.h>
int reg (char str[])
{
int i;
int n=strlen(str);
for (i=0; i<n; i++)
if (str[i]<91) str[i]=str[i]+32;
return str[i];
}
int main ()
{
char str[100]="OlololOlolOloLolOlooLololOlOllllOOOloLoloOlO";
int a=reg(str);
int i,n=strlen(str);
reg(str);
printf("%s",str);
return 0;
}
Программа собственно переводит в нижний регистр. Но как-то жестко написана. Очень сокрушаюсь, что нас еще не научили strwlr и strupr в институте. Оправдано такое написание или все же лучше пользоваться библиотечными функциями?
ForEveR 09.06.2010 16:55 # 0
hromjo 09.06.2010 17:17 # +1
Stalker 10.06.2010 00:00 # 0
absolut 10.06.2010 08:39 # 0
Единственно что могу предположить, массив не обязан заканчиваться нулем и может содержать этот ноль в любом месте.
Строка же - нуль-терминирована. Так что читающему код проще понять, передается указатель как массив или как строка. И следовательно как в теле функции аргумент будет интерпретирован. В данном же случае (из-за strlen() внутри) нагляднее чтоб было char*.
Dreyk 09.06.2010 17:20 # −3
xynta 09.06.2010 17:38 # −1
tz-lom 09.06.2010 18:09 # −1
ForEveR 09.06.2010 18:14 # 0
inkanus-gray 09.06.2010 18:15 # +5
А какое значение она возвращает? Она должна возвращать последний байт строки (то есть ноль), но тип результата int, а не char.
Порадовали два вызова reg(str) в мэйне. Значит, если бы в строке был пробел, то к его коду прибавится 32, а потом ещё 32.
Плюсую однозначно!
TarasB 09.06.2010 19:27 # +1
for (i=0; i<n; i++)
Фу.
while(*str++)
вот ТРУЪ-сишный стиль.
This is obvious 09.06.2010 19:31 # 0
больше указателей! Это признак того, что Вы - программист скиллованый.
Stalker 10.06.2010 00:04 # 0
daemon_master 10.06.2010 01:28 # +3
если на то пошло
TarasB 11.06.2010 12:58 # 0
Stalker 11.06.2010 13:14 # 0
absolut 11.06.2010 13:49 # 0
Это да. Но в теле цикла уже будет указывать на второй символ.
TarasB 11.06.2010 17:50 # 0
s--;while(*(++s))
daemon_master 11.06.2010 15:44 # 0
AxisPod 10.06.2010 07:44 # −7
xynta 10.06.2010 17:17 # −4
Webkill 11.06.2010 15:49 # −5
xynta 11.06.2010 16:02 # −4
bugmenot 28.08.2010 07:36 # +1
Зато «написано чистенько», ага
Вердикт: говнокод заплюсовать, автора наградить именной таблицей символов (и по секрету сказать, что в ней еще полно букв, требующих преобразования)
ЗЫЖ длину имеет смысл сделать параметром, а не вычислять трижды