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

Чтение строки неизвестной длины - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Обработка изображений http://www.cyberforum.ru/cpp-beginners/thread389903.html
Здравствуйте, помогите пожалуйста с алгоритмом или написанием программы на с++. Задача такая: нужно на jpeg/bmp фотографии определить тень.
C++ Проверить, превосходят ли элементы строк матрицы заданное число ребят выручайте нужен код по этой проге срочно в универе уже ругаются((( Дано натуральное число N, вещественная матрица N x N , вещественное число x. Получить последовательность из 0 и 1 (b1,b2,...bn), где bi=1, если элементы i-той строки не превосходят x1 и b1=1,в противном случае. http://www.cyberforum.ru/cpp-beginners/thread389895.html
C++ Call of nonfunction
#include <stdio.h> #include <conio.h> #include <math.h> double eps = 1e-9; int k; //------------epsilon double ep (double x) { int i; double q,a,s; i = 0; s = a = 1;
Выведите числа в порядке возрастания C++
Отсортируйте заданный массив. Первая строка входных данных содержит количество элементов в массиве N, N ≤ 105. Далее идет N целых чисел, не превосходящих по абсолютной величине 10^9. Выведите эти числа в порядке возрастания. Пример: Входные данные: 3 2 3 1 Выходные данные: 1 2 3
C++ оператор this http://www.cyberforum.ru/cpp-beginners/thread389883.html
Прочитал раздел и с книги Стратуструпа о операторе this. но не фига не понял где его использовать его применение
C++ системы счисления!!! напишите программу пожалуйста!!! Даны действительное число x, натуральное число q (0 =< x < 1, q => 2). Получить пять цифр q-ичного представления числа x, т.е. получить последовательность целых неотрицательных a_1, ..., a_5 такую, что x = a_1*q^-1 + ...a_5*q^-5 + r, 0 =< a_i =< q-1, r < q^-5. подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
23.11.2011, 16:16     Чтение строки неизвестной длины
Цитата Сообщение от Siend Посмотреть сообщение
P.S.:
если кому понадобиться:

#include <stdio.h>
#include <stdlib.h>

int main()
{

long sLen = 0;//Будет содержать в себе длинну строки
//Начальное выделение памяти всего под 1 символ
char ch, * str = (char *)malloc(sizeof(char));
printf("Enter string :\n");
while((ch = getchar()) != '\n')
{
str[sLen] = ch;
str = (char *)realloc(str,(1 + (sLen++))*sizeof(char));
}
str[sLen] = '\0';
printf("Your input : \n");
printf("%s\n",str);
system("pause");//Стоп-точка иначе приложение отработав сразу закроется
return 0;
}

Добавлено через 1 минуту
-=ЮрА=-, спасибо, я уже остановился на этом варианте) если препод будет возникать, переделаю через read чтоб вообще с защитой от дурака, и пусть только не примет)))
Нет, такие творения никому не нужны! Это вы будете перевыделять память для каждого символа?! Это пример того, как не надо писать программы!

На самом деле ваша задача решается следующим образом.

Выделяете строку фиксированного размера. Можно использовать размер стандартного буфера, который обычно составляет 256 символов.

Читаете строку с помощью функции fgets, которая гарантирует, что буфер не будет переполнен в отличии от функции gets, которую вам здесь рекомендовали, и которую не следует использовать, так как она не гарантирует, что буфер не будет переполнен.

Затем смсотрите, считан ли символ новой строки. Если не считан, то тогда удваиваете размер вашего исходного буфера и с помощью realloc() выделяете новый участок памяти.

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