Форум программистов, компьютерный форум CyberForum.ru

Замен стандартной функции stricmp - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 5.00
Alekssey
2 / 2 / 0
Регистрация: 11.12.2010
Сообщений: 59
19.12.2011, 16:24     Замен стандартной функции stricmp #1
Средствами языка Си реализовать функцию работы со строками. функция должна учитывать особенности кодировки кириллицы в DOS и Windows
Вот мои наработки:
C++
1
2
3
4
5
6
7
8
9
10
11
#include<stdio.h> 
#include<ctype.h> 
int stricmp(char *s, char *t) { 
for (; tolower(*s)==tolower(*t); s++, t++) 
if(*s == '\0') return (0); 
return(*s-*t); 
} 
void main(){ 
char *s="ABCC", *t="abcCD1"; 
printf("%d\n",stricmp (s,t)); 
getchar();
Почему то не работает сравнение, если в строке есть русские символы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
res
56 / 9 / 1
Регистрация: 05.04.2010
Сообщений: 143
19.12.2011, 16:28     Замен стандартной функции stricmp #2
Цитата Сообщение от Alekssey Посмотреть сообщение
в строке есть русские символы
А коддировку кто менять будет?) У вас же не линукс
Alekssey
2 / 2 / 0
Регистрация: 11.12.2010
Сообщений: 59
19.12.2011, 16:33  [ТС]     Замен стандартной функции stricmp #3
Не понял, эта функция может работать только с латиницей?

Может напишите ваш вариант, для замены стандартной функции stricmp?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.12.2011, 17:09     Замен стандартной функции stricmp #4
Цитата Сообщение от Alekssey Посмотреть сообщение
Замен стандартной функции stricmp
А она точно стандартная??? Ссылочку не кинете?
Alekssey
2 / 2 / 0
Регистрация: 11.12.2010
Сообщений: 59
19.12.2011, 17:50  [ТС]     Замен стандартной функции stricmp #5
она есть в библиотеке string.h
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.12.2011, 17:52     Замен стандартной функции stricmp #6
Alekssey, да ладно, http://www.cplusplus.com/reference/clibrary/cstring/ , и где же она там... Эх помог бы Вам, но Вы сами этого не хотите
Alekssey
2 / 2 / 0
Регистрация: 11.12.2010
Сообщений: 59
19.12.2011, 18:05  [ТС]     Замен стандартной функции stricmp #7
ладно, давайте не будем углубляться в содержимое библиотек, формулировка задания просто может немного некорректна:
Средствами языка Си реализовать функцию работы со строками. Сравнить работу функции со стандартной функцией Си (файл string.h) Ваша функция должна учитывать особенности кодировки кириллицы в DOS и Windows!
stricmp – сравнение двух строк, игнорируя регистр символов
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.12.2011, 18:15     Замен стандартной функции stricmp #8
Цитата Сообщение от Alekssey Посмотреть сообщение
stricmp – сравнение двух строк, игнорируя регистр символов
Стандартной функции stricmp в srting.h нет. Когда будете писать свою пользуйтесь
C++
1
#include <ctype.h>
http://www.cplusplus.com/reference/clibrary/cctype/
Alekssey
2 / 2 / 0
Регистрация: 11.12.2010
Сообщений: 59
19.12.2011, 18:18  [ТС]     Замен стандартной функции stricmp #9
а они с русскими символами работают?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.12.2011, 18:22     Замен стандартной функции stricmp #10
Alekssey, или пиши в линуксе, или меняй кодировку. Русские шрифты в консоли
Alekssey
2 / 2 / 0
Регистрация: 11.12.2010
Сообщений: 59
19.12.2011, 19:39  [ТС]     Замен стандартной функции stricmp #11
ясно, значит программно это не решить(
Может как то можно перекодировать саму строку, и потом сравнить?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
19.12.2011, 19:45     Замен стандартной функции stricmp #12
Alekssey, Можно) Использовать класс locale к примеру с нужным фасетом.
Alekssey
2 / 2 / 0
Регистрация: 11.12.2010
Сообщений: 59
19.12.2011, 19:55  [ТС]     Замен стандартной функции stricmp #13
Хм... не думал что все так сложно будет.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.12.2011, 20:13     Замен стандартной функции stricmp #14
Цитата Сообщение от Alekssey Посмотреть сообщение
Средствами языка Си
Цитата Сообщение от ForEveR Посмотреть сообщение
Можно) Использовать класс locale к примеру с нужным фасетом.
А в Си есть классы?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2011, 20:44     Замен стандартной функции stricmp
Еще ссылки по теме:

Выполнить сортировку массива с помощью стандартной функции быстрой сортировки qsort C++
C++ Генератор случайных чисел без использования стандартной функции
C++ Ошибка в определении стандартной API функции

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
19.12.2011, 20:44     Замен стандартной функции stricmp #15
go, Очевидно нет. Пропустил я как-то что тут про Си разговор. Можно iconv подключить, если не нужна кроссплатф.
Yandex
Объявления
19.12.2011, 20:44     Замен стандартной функции stricmp
Ответ Создать тему
Опции темы

Текущее время: 20:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru