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

Функция для считывания строки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ как в программе написать что последовательность задается пользователем в произвольном порядке http://www.cyberforum.ru/cpp-beginners/thread774694.html
как в программе написать что последовательность задается пользователем в произвольном порядке, если можно приведите часть прогрмаммы
C++ Все нулевые элементы матрицы заменить на единицу Условие: Все нулевые элементы заменить на единицу! Во второй строке у меня там изменённый масив но там выводит нули одни! Почему? #include <stdlib.h> #include <iostream.h> #include <conio.h> #pragma hdrstop int main() { randomize(); //Запускаем режим сл. чисел, без этого каждый раз при запуске числа будут одни и теже int i,Arr; http://www.cyberforum.ru/cpp-beginners/thread774687.html
C++ this необходим?
В шарпе я привык, что this используется только тогда, когда нужно добраться до эл-та, которого скрывает параметр. В С++ так же или лучше его все таки использовать всегда(прост во многих исходниках более-менее профессиональных програмеров он повсеместен)? Заранее блавгодарен.
Считывание с текстового файла. Сортирование C++
С текстового файла считать последовательность записей, содержащих данные о книге: <Автор>, <Название книги>, <Год издания>, <Количество страниц>, <Стоимость>. Распечатать введенные данные в виде таблицы, а также : Отсортировать в возрастающем порядке данные по году издания. Определить три книги с наименьшим количеством страниц .. пока что написал это, но и то не совсем правильно работает,...
C++ Считывание с текстового файла. Сортировка http://www.cyberforum.ru/cpp-beginners/thread774662.html
С текстового файла считать последовательность записей, содержащих данные о книге: <Автор>, <Название книги>, <Год издания>, <Количество страниц>, <Стоимость>. Распечатать введенные данные в виде таблицы, а также : Отсортировать в возрастающем порядке данные по году издания. Определить три книги с наименьшим количеством страниц .. пока что написал это, но и то не совсем правильно работает,...
C++ Не меняется значение указателя Написал функцию для подсчёта количества подстрок. При вызове на строках, которые в main вместо 3 выдаёт ответ 4. На остальных строках ответ верный. Это связано с тем, что в цикле while в функции подсчёта подстрок на одной итерации, почему-то, не изменяется указатель на str (смотреть комментарии). Как это объяснить??? static int SearchSub(const char *str, const char *substr) { int count =... подробнее

Показать сообщение отдельно
bgm123
39 / 39 / 16
Регистрация: 29.01.2013
Сообщений: 277
29.01.2013, 21:17     Функция для считывания строки
Требуется написать функция для считывания строки, используя динамическое выделения памяти? Как это по лучше сделать подскажите? Было бы неплохо привести пример кода.

Добавлено через 24 минуты
Вот попробывал написать функцию для динамического считывания строки. Функция возвращает указатель, который надо будет потом во внешней функции delete[]. Скажите, пожалуйста, что в этой функции не так??? Как написать её получше и покомпактнее???

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
char * Read(void)
{
    char *str, *copyPtr;
    int count = 0;
    int size = 80;
    char ch;
        
    str = new char[size + 1];
    fflush(stdin);
    
    ch = cin.get();
    while(ch != '\n'){
        if(count == size){
            str[count] = 0;
            copyPtr = new char[size + 1];
            strcpy(copyPtr, str);
            delete []str;
 
            size *= 2;
            str = new char[size + 1];
            strcpy(str, copyPtr);
            delete []copyPtr;
        }
 
        str[count] = ch;
        count++;
        ch = cin.get();
    }
    
    str[count] = 0;
    return str;
}
Добавлено через 4 минуты
Вот немного переделал:

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
char * Read(void)
{
    const int MAX_STR = 2048;
    char *str, *copyPtr;
    int count = 0;
    int size = 80;
    char ch;
        
    str = new char[size + 1];
    fflush(stdin);
    
    ch = cin.get();
    while(ch != '\n')
    {
        if(count >= MAX_STR) 
            return NULL;
 
        if(count == size){
            str[count] = 0;
            copyPtr = new char[size + 1];
            strcpy(copyPtr, str);
            delete []str;
 
            size *= 2;
            str = new char[size + 1];
            strcpy(str, copyPtr);
            delete []copyPtr;
        }
 
        str[count] = ch;
        count++;
        ch = cin.get();
    }
    
    str[count] = 0;
    return str;
}
Добавлено через 16 минут
up...........

Добавлено через 14 минут
up....
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru