Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
blackpantera
1 / 1 / 1
Регистрация: 06.06.2012
Сообщений: 38
1

Не правильно работает функция GetSubstring для русского текста

27.09.2012, 08:38. Просмотров 1340. Ответов 22
Метки нет (Все метки)

Не правильно работает функция GetSubstring. Подскажи пожалуйста в чём причина.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <stdio.h>
#include <Windows.h>
#include <string.h>
 
#define FALSE 0
#define TRUE 1
#define MaxString 1000
#define MaxLength 1000
 
 
int main(void)
{ char buffer[MaxLength], substring[MaxLength];
  char *bf=NULL, *ss=NULL;
  int i=FALSE;
  int GetLine(char *bf,char *ss);
 
    bf=buffer;
    ss=substring;
 
    while (i<MaxString){GetLine(bf,ss); i++;}
 
return FALSE;
Sleep(100000);
}
 
int GetLine(char *bf,char *ss)
{char c;
 int i,length;
 void GetSubstring(char *bf, int length,char *ss);
 
for(i=0;(i<MaxLength)&&((c=getchar())!=EOF)&& (c!='\n');i++)
    *(bf+i)=c;
*(bf+i)='\0';
 
length=i;
printf("BUFFER %s\n",bf);
GetSubstring(bf,length,ss);
 
return FALSE;
}
 
void GetSubstring(char *bf, int length,char *ss)
{int i,IsSubString=FALSE;
 int counter=0;
 
for(i=0;i<length;i++)
    {//if (('А'<=*(bf+i)<='Я')||('а'<=*(bf+i)<='я'))
    if ((*(bf+i)<='Я' && *(bf+i)>='А')||(*(bf+i)<='я' && *(bf+i)>='а'))
        {*(ss++)=*(bf+i);
        IsSubString=TRUE;
        counter++;
        printf(" There are substrings %d %d \n", counter,length);} 
 
    else if (IsSubString == FALSE) printf("No substrings %d %d\n", counter,length);}
 
    if (IsSubString) *ss='\0'; 
        printf("substring %s",ss);
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2012, 08:38
Ответы с готовыми решениями:

Не правильно работает функция для заливки цветом, для Paint
Всем привет! Помогите пожалуйста с функцией заливки для паинт. Проблема такая, когда цвет...

Не правильно работает функция SUM для ADOQuery
Подсчитываю сумму одинаковых таможнь, а в таблицу выводит только таможни, но по 1 разу, а второе...

Не работает ввод русского текста в Microsoft Visual C++ 2010 express
Здравствуйте! Не работает ввод русского текста в Microsoft Visual C++ 2010 express. С выводом...

Функция для транслита русского языка
Здравствуйте форумчане. Имеется два TextBox-а в 1м написана фраза на русском языке, как сделать,...

Где можно найти шрифты для русского текста для Паскаль Борланд?
Где можно найти шрифты для русского текста для Паскаль Борланд? Добавлено через 2 минуты и как...

22
blackpantera
1 / 1 / 1
Регистрация: 06.06.2012
Сообщений: 38
30.09.2012, 19:29  [ТС] 21
Не могу найти ошибку. Цикл while в процедуре GetSubstring зацикливается и всё. Подскажите кто-нибудь плис.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MaxLength 1000
#define MaxString 1000
 
struct Substring
{char Substr[MaxLength];
int SubstrSize;};
 
struct Substring AmountOfSubstr[100];
 
 
int main(void)
{int i,j,n=0, AmountString[100];
int GetSubstring(void);
 
i=j=-1;
 
puts("Enter string:");
while (++i<MaxString) AmountString[++j]=GetSubstring();
 
n=j;
j=0;
 
while (j<n)
    for (i=0;i<AmountString[j];i++)
        printf("Substring",AmountOfSubstr[i].Substr);
 
return 0;
}
 
int GetSubstring(void)
{char *buf = (char*)malloc(MaxLength);
 char *c;
 int i=-1,j=0,ThereAreSubstring=0;
 
 AmountOfSubstr[j].SubstrSize=0;
 
 memset(buf,'\0', MaxLength);
 
 gets(buf);
 
 c=buf; printf("*c0: %c\n",*c);
 
     while ((*c!='.') || (*c!='\n'))    
        {printf("*c1: %c\n",*c);  system("PAUSE");
 
        if (((*c>=0xffffff80) && (*c<=0xffffff9f) )||( (*c>=0xffffffa0) && (*c<=0xffffffef)))
        {
            AmountOfSubstr[j].SubstrSize++;
            AmountOfSubstr[j].Substr[++i]=*c;printf("Substring %c\n",AmountOfSubstr[j].Substr[i]);
            ThereAreSubstring=1;
        }
        else if (!(ThereAreSubstring)) {AmountOfSubstr[j].SubstrSize='\0';j++;ThereAreSubstring=0;}
 
        c++;
        printf("*c2: %c\n",*c);
     system("PAUSE");}
 
 
    printf("Substring 22 %s",AmountOfSubstr[j].Substr);
 
return j-1;
}
0
alkagolik
Заблокирован
30.09.2012, 20:15 22
vorob, ну как бы нет.
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
~/samples$ cat sample.c 
#include <stdio.h>
#include <stdlib.h>
 
int main() {
 
    system("chcp");
    return 0;
}
~/samples$ clang sample.c
~/samples$ ./a.out 
sh: 1: chcp: not found
~/samples$
0
Nameless One
Эксперт С++
5794 / 3443 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
01.10.2012, 03:32 23
Надо использовать широкие символы и обязательно устанавливать при запуске системную локаль.

PS. Тему не читал.
0
01.10.2012, 03:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2012, 03:32

функция которая переводит текст в русского на транслит не работает с кодировкой ЮТФ-8, я при windows1251 всё впорядке
Данная функция которая переводит текст в русского на транслит не работает с кодировкой ЮТФ-8, я при...

Программа для перевода текста с русского на английский
Здравствуйте! У меня проблема,Я не могу написать программу для перевода текста с русского на...

Шифр Цезаря со сдвигом на 1 символ для русского текста
Дан файл содержащий зашифрованный русский текст. Каждая буква замененна на следующую за ней....


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru