Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
chekir

В чём ошибка с указателем? (динамический массив, строки)

24.11.2012, 23:29. Показов 1605. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие задачи:
Разделить символы из строки S1 на три группы: гласные, согласные, цифры. Группы разделить пробелами и отсортировать их по возрастанию.
Пока что пытаюсь выделить из строки гласные и согласные буквы латинского алфавита. При запуске программы в массиве появляются лишние непонятные символы, не могу понять в чём ошибка, помогите, пожалуйста.

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
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <malloc.h>
#include <conio.h>
int main()
{
    const int N=255;
    int i,j,z, n=0;
    char s1[N];
    char*b;
    printf("Input string\n");
    gets(s1);
    puts(s1);
    printf("%d\n",strlen(s1));
    for (i=0;i<strlen(s1);i++) 
    if(isalnum(s1[i])) 
    {
        printf("%c",s1[i]);
        n++;
    }
    printf("\n");
    
    //printf("%d\n",n);
        b=(char*)malloc(n*sizeof(char));//b 0xcccccccc <Неправильный указатель>    char *
//b 0x00884350 "НННээээ««««««««ю"   char * при вводе ert
        for (i=0,j=0;i<strlen(s1);i++) 
        {
    if(isalnum(s1[i])) 
    {
        b[j]=s1[i];
        j++;
    printf("\nmassiv b: %s",b);
    }
        }
    z=strlen(b);    
    //printf("\nmassiv b: %s",b);
    if (!b)
    {
        printf("Error\n");
        getch();
        return 1;
    }
    printf("%d",z);
    printf("\n");
    for (i=0;i<z;i++)
    {
    if(b[i]=='a'||b[i]=='e'||b[i]=='y'||b[i]=='u'||b[i]=='i'||b[i]=='o')
    printf("%c",b[i]);
    }
    
    printf("\n");
    for (j=0;j<z;j++)
    {
    if(isalpha(b[j])&&b[j]!='a'&&b[j]!='e'&&b[j]!='y'&&b[j]!='u'&&b[j]!='i'&&b[j]!='o')
    printf("%c",b[j]);
    }
    printf("\n");
    
    free(b);
    return 0;
}
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.11.2012, 23:29
Ответы с готовыми решениями:

Динамический массив с указателем
Здравствуйте. Я не могу до конца понять суть самого задания, но постараюсь объяснить его: нужно объявить два динамических массива....

Сделать динамический массив структур, причем в структуре так же существует динамический массив
Добрый день. Есть такая пзадача: нужно сделать динамический массив структур, причем в структуре так же существует динамический массив....

Динамический массив (глупая ошибка)
Здравствуйте, помогите найти ошибку, знаю, что она связана с вычислением минимума, но найти не могу. //Дан двумерный массив из 5...

2
chekir
25.11.2012, 00:57
Цитата Сообщение от chekir Посмотреть сообщение
Условие задачи:
Разделить символы из строки S1 на три группы: гласные, согласные, цифры. Группы разделить пробелами и отсортировать их по возрастанию.
Пока что пытаюсь выделить из строки гласные и согласные буквы латинского алфавита. При запуске программы в массиве появляются лишние непонятные символы, не могу понять в чём ошибка, помогите, пожалуйста.

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
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <malloc.h>
#include <conio.h>
int main()
{
    const int N=255;
    int i,j,z, n=0;
    char s1[N];
    char*b;
    printf("Input string\n");
    gets(s1);
    puts(s1);
    printf("%d\n",strlen(s1));
    for (i=0;i<strlen(s1);i++) 
    if(isalnum(s1[i])) 
    {
        printf("%c",s1[i]);
        n++;
    }
    printf("\n");
    
    //printf("%d\n",n);
        b=(char*)malloc(n*sizeof(char));//b 0xcccccccc <Неправильный указатель>    char *
//b 0x00884350 "НННээээ««««««««ю"   char * при вводе ert
        for (i=0,j=0;i<strlen(s1);i++) 
        {
    if(isalnum(s1[i])) 
    {
        b[j]=s1[i];
        j++;
    printf("\nmassiv b: %s",b);
    }
        }
    z=strlen(b);    
    //printf("\nmassiv b: %s",b);
    if (!b)
    {
        printf("Error\n");
        getch();
        return 1;
    }
    printf("%d",z);
    printf("\n");
    for (i=0;i<z;i++)
    {
    if(b[i]=='a'||b[i]=='e'||b[i]=='y'||b[i]=='u'||b[i]=='i'||b[i]=='o')
    printf("%c",b[i]);
    }
    
    printf("\n");
    for (j=0;j<z;j++)
    {
    if(isalpha(b[j])&&b[j]!='a'&&b[j]!='e'&&b[j]!='y'&&b[j]!='u'&&b[j]!='i'&&b[j]!='o')
    printf("%c",b[j]);
    }
    printf("\n");
    
    free(b);
    return 0;
}
скриншот ошибки:
Миниатюры
В чём ошибка с указателем? (динамический массив, строки)  
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
25.11.2012, 12:13
У тебя по указателю b получается строка без нуля в конце, а ты к ней применяешь функции strlen и printf.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.11.2012, 12:13
Помогаю со студенческими работами здесь

Динамический массив строк. (Ошибка)
Добрый вечер, не получается создать динамический массив строк, ошибка в char **strArr; Идея в том, чтобы из char str =...

Ошибка при чтении символов строки и динамический массив классов
Добрый день, не знаю на каком языке я думал, когда писал это, но казалось что вот раз и всё заработает... 1)Конструктор по умолчанию...

Динамический массив и строки и ошибка app4.exe вызвал срабатывание точки останова
Ребята, подскажите, создал динамический массив типа char, заполняю его 3-мя элементами и удаляю, вот здесь: if(flag==true) { ...

Получить определенные поля класса, работая с указателем на класс, как с указателем на массив
Мне бы хотелось узнать в чем ошибка моего кода Вот мои наработки которые не работают где я пытаюсь получить текст из второго поля зная...

Добавить строки, начиная со строки К1 и до строки К2, в динамический массив строк
Есть динамический массив строк. Заполняется, т.е. размер его уже известен будет. Но дальше нужно сделать задание: &quot;Добавить строки,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru