Форум: Форум C++Разное
Новые темы: 00
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите разобраться со строками в С++
 
 автор: Vitalik   (14.06.2009 в 19:30)   письмо автору
 
 

Не могу понять как написать программу работы со строкой у которй будет указатель на эту строку и после мы сможем работать с этой строкой. Пробовал выделить память как на массив одномернвй только использовал тип char, так оно выводит строку только помощью функции scanf, но проблема в том что scanf выводит строку только до пробела а что после нет. С функцией gets(s), сторку не выводит. Так вот вопрос, напишите пожалуйста код, в которм будет указатель на строку, мы введем сторку, прочитаем, и далее сможем с ней работать. (копировать, и т.д.) Спасибо.

  Ответить  
 
 автор: GeorgeIV   (15.06.2009 в 11:40)   письмо автору
 
   для: Vitalik   (14.06.2009 в 19:30)
 

Как то у вас все запуталось в голове. Функция scanf не служит для вывода строки, а как раз, наоборот, для форматированного ввода строки. А нужен ли он вам? может вводить посимвольно с анализом окончания по какой нибудь комбинации типа Ctrl+Z?
gets тоже служит для ввода строки в переменную из стандартного устройства ввода.
И как понимать фразу - "введем строку, прочитаем...". может введем строку с клавиатуры, выведем эту строку на экран? Что хочется в итоге?

  Ответить  
 
 автор: Vitalik   (15.06.2009 в 12:04)   письмо автору
 
   для: GeorgeIV   (15.06.2009 в 11:40)
 

Правильно, хотел ввести строку с клавиатуры, и вывести ее на экран. Но при этом работать с указателем на эту строку. Я просто не могу понять: зачем нужен указатель на сроку, если я ее копирование, обрезание делаю и без указателя. Со строкой я программы составлял, но вот чтобы в программе использовался указатель на строку не получается.
Вот в одномерном массиве указатель использовался тогда когда было неизвестно количество символов до начала исполнения программы и мы делали указатель на этот массив и в программе вводили сколько там будет содержаться значений. Вот строка-этоже массив символов, думал по такой же аналогии нужны там указатели (в строке) а как оказалось чего-то у меня программу с указателем на строку написать не получилось.
Напишите пожалуйста приемер какой-нибудь программы где будет использоваться указатель на эту строку.
Иеще а как это вводить посимвольно с анализом окончания по какой нибудь комбинации типа Ctrl+Z???

  Ответить  
 
 автор: GeorgeIV   (16.06.2009 в 11:09)   письмо автору
 
   для: Vitalik   (15.06.2009 в 12:04)
 

Я просто не могу понять: зачем нужен указатель на сроку, если я ее копирование, обрезание делаю и без указателя

Это как же интересно? Приведите код. Если не использовать STL то в Си стандартная работа со строками - это указатель на массив char. ОБЯЗАТЕЛНЫМ является наличие завершающего нулевого символа в строке.

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

Это вообще чушь полная, нельзя использовать указатель на неинициализированную область памяти. А инициализация как раз и предполагает выделение в памяти нужного количества элементов.. И только потом уже можно вводить данные в массив.

Почитайте какую-нибудь простейшую книжку по программированию на Си, ибо это самые азы Си.

  Ответить  
 
 автор: Vitalik   (16.06.2009 в 12:05)   письмо автору
 
   для: GeorgeIV   (16.06.2009 в 11:09)
 

ну вот что получилось у меня со строкой

Udalenie iz stroki neskol'ko elementov
#include <stdio.h>
#include <russian.h>

void main()
{
char s1[80],s2[80];
int n1,n2;
printf("%s",Rus("Введите строку"));
printf("\n");
gets(s1);
printf("%s",Rus("Введите номер символа с которого нужно начать "));
scanf("%d", &n1);
printf("%s",Rus("Введите сколько символов надо обрезать "));
scanf("%d", &n2);
strncpy(s2,s1,n1-1);
s2[n1-1]='\0'; //все как положено завершающий ноля я не забыл
strcat(s2,s1+(n1+n2-1));
puts(s2);
}
а с массивлм я ерунду написал, я имел в виду динамический массив

Приведите пожалуйста Ваш код работы с указателями на строки.

  Ответить  
 
 автор: GeorgeIV   (16.06.2009 в 15:11)   письмо автору
 
   для: Vitalik   (16.06.2009 в 12:05)
 

А кто вам сказал, что это работа без указателя? По определению, имя массива является указателем на сам массив.
Функции strcat, strcpy и т.п. оперируют именно указателями..

  Ответить  
 
 автор: Vitalik   (16.06.2009 в 16:16)   письмо автору
 
   для: GeorgeIV   (16.06.2009 в 15:11)
 

Тогда вопросов нет, спасибо GeorgeIV за пмощ, извиняюсь, что задавал некорректные вопросы, просто к экзамену головлюсь и немного все в голове перемешалось. Еще раз огромное спасибо. Respekt)))))

  Ответить  
 
 автор: GeorgeIV   (17.06.2009 в 10:41)   письмо автору
 
   для: Vitalik   (16.06.2009 в 16:16)
 

Да, пожалйуйста! Когда хотят понять и что то еще при этом и сами пишут, всегда поможем разобраться, сами с этого начинали.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования