Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
4 / 4 / 4
Регистрация: 11.10.2013
Сообщений: 123
1

Работа с указателями char

10.11.2014, 16:19. Показов 1087. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте дорогие товарищи. Я изучал С# и решил перейти на С++. Сейчас изучаю указатели. По сути сейчас я хочу сделать что-то ввода-вывода строки. Данный метод "записывает в себя строку"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
char* str = (char*)malloc(sizeof(char));
int size = 1;
int used = 0;
 
void read()//чтение строки с клавиатуры
{
    for (int i = getchar(); i != 10; i = getchar())
    {
        if (used == size)
        {
            size++;
            str = (char*)realloc(str, sizeof(char) * size);
        }
        str[used++] = i;
    }
}
Проблема в том, что при попытке вывода данной строки у меня выводится что-то несуразное, вернее сначала выводится именно та строка, которую я вводил, но к ней прикрепляется что-то непонятное.

Т.е. после этого метода:
C++
1
2
3
4
5
6
7
8
9
int _tmain(int argc, _TCHAR* argv[])
{ 
    printf("Enter the string\n");
    read();
    printf("\n");
    printf("%s", str);
    getchar();
    return 0;
}
У меня получается это: (см.прикреплённые файлы)
Как избавиться от непонятных символов(обведены) и почему они там появляются?
Миниатюры
Работа с указателями char  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.11.2014, 16:19
Ответы с готовыми решениями:

Работа с указателями и строками char
Подскажите пожалуйста, почему этот пример компилируется, но оба варианта замены символа вылетают с...

Работа со строками - Invalid conversion from 'char' to 'const char*'
#include <iostream> #include <ctype.h> #include <stdio.h> #include <string.h> using namespace...

Работа с указателями
Здравствуйте! Есть массив созданный ГСС. Надо написать функция которая вычисляет сколько в нем...

Работа с указателями
#include <iostream> #include <conio.h> using namespace std; void fun(int *p) { int...

3
7789 / 6556 / 2984
Регистрация: 14.04.2014
Сообщений: 28,661
10.11.2014, 16:31 2
Лучший ответ Сообщение было отмечено Red-Cat-Fat как решение

Решение

Символ конца строки вставлять нужно.
1
4 / 4 / 4
Регистрация: 11.10.2013
Сообщений: 123
10.11.2014, 16:33  [ТС] 3
nmcf, а как?
0
7789 / 6556 / 2984
Регистрация: 14.04.2014
Сообщений: 28,661
10.11.2014, 16:45 4
Лучший ответ Сообщение было отмечено Red-Cat-Fat как решение

Решение

Резервировать надо на 1 символ больше, в конце всегда должен быть символ '\0'.
1
10.11.2014, 16:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2014, 16:45
Помогаю со студенческими работами здесь

работа с указателями
Вспоминаю с++ и в связи с этим возникло несколько вопросов. 1) если сделать так : myobj *obj...

Работа с указателями
Доброго времени суток! Прошу помощи в решении очень интересной задачи. Перепробовал все свои...

Работа с указателями
Здравствуйте Не понимаю, почему в следующем коде #include <iostream> using namespace...

Работа с указателями
1. Написать функцию, принимающую в качестве параметра указатель на первый символ строки и...

Работа с указателями
Написать программу, в которой выполнить следующие действия: 1) Описать указатели на все известные...

Работа с указателями
Расскажите как работает каждая строка в коде char *A = "123456789"; unsigned B = 1; char *X =...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru