|
|
|
| Не могу понять как написать программу работы со строкой у которй будет указатель на эту строку и после мы сможем работать с этой строкой. Пробовал выделить память как на массив одномернвй только использовал тип char, так оно выводит строку только помощью функции scanf, но проблема в том что scanf выводит строку только до пробела а что после нет. С функцией gets(s), сторку не выводит. Так вот вопрос, напишите пожалуйста код, в которм будет указатель на строку, мы введем сторку, прочитаем, и далее сможем с ней работать. (копировать, и т.д.) Спасибо. | |
|
|
|
|
|
|
|
для: Vitalik
(14.06.2009 в 19:30)
| | Как то у вас все запуталось в голове. Функция scanf не служит для вывода строки, а как раз, наоборот, для форматированного ввода строки. А нужен ли он вам? может вводить посимвольно с анализом окончания по какой нибудь комбинации типа Ctrl+Z?
gets тоже служит для ввода строки в переменную из стандартного устройства ввода.
И как понимать фразу - "введем строку, прочитаем...". может введем строку с клавиатуры, выведем эту строку на экран? Что хочется в итоге? | |
|
|
|
|
|
|
|
для: GeorgeIV
(15.06.2009 в 11:40)
| | Правильно, хотел ввести строку с клавиатуры, и вывести ее на экран. Но при этом работать с указателем на эту строку. Я просто не могу понять: зачем нужен указатель на сроку, если я ее копирование, обрезание делаю и без указателя. Со строкой я программы составлял, но вот чтобы в программе использовался указатель на строку не получается.
Вот в одномерном массиве указатель использовался тогда когда было неизвестно количество символов до начала исполнения программы и мы делали указатель на этот массив и в программе вводили сколько там будет содержаться значений. Вот строка-этоже массив символов, думал по такой же аналогии нужны там указатели (в строке) а как оказалось чего-то у меня программу с указателем на строку написать не получилось.
Напишите пожалуйста приемер какой-нибудь программы где будет использоваться указатель на эту строку.
Иеще а как это вводить посимвольно с анализом окончания по какой нибудь комбинации типа Ctrl+Z??? | |
|
|
|
|
|
|
|
для: Vitalik
(15.06.2009 в 12:04)
| | Я просто не могу понять: зачем нужен указатель на сроку, если я ее копирование, обрезание делаю и без указателя |
Это как же интересно? Приведите код. Если не использовать STL то в Си стандартная работа со строками - это указатель на массив char. ОБЯЗАТЕЛНЫМ является наличие завершающего нулевого символа в строке.
Вот в одномерном массиве указатель использовался тогда когда было неизвестно
количество символов до начала исполнения программы и мы делали указатель на этот
массив и в программе вводили сколько там будет содержаться значений |
Это вообще чушь полная, нельзя использовать указатель на неинициализированную область памяти. А инициализация как раз и предполагает выделение в памяти нужного количества элементов.. И только потом уже можно вводить данные в массив.
Почитайте какую-нибудь простейшую книжку по программированию на Си, ибо это самые азы Си. | |
|
|
|
|
|
|
|
для: 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);
}
а с массивлм я ерунду написал, я имел в виду динамический массив
Приведите пожалуйста Ваш код работы с указателями на строки. | |
|
|
|
|
|
|
|
для: Vitalik
(16.06.2009 в 12:05)
| | А кто вам сказал, что это работа без указателя? По определению, имя массива является указателем на сам массив.
Функции strcat, strcpy и т.п. оперируют именно указателями.. | |
|
|
|
|
|
|
|
для: GeorgeIV
(16.06.2009 в 15:11)
| | Тогда вопросов нет, спасибо GeorgeIV за пмощ, извиняюсь, что задавал некорректные вопросы, просто к экзамену головлюсь и немного все в голове перемешалось. Еще раз огромное спасибо. Respekt))))) | |
|
|
|
|
|
|
|
для: Vitalik
(16.06.2009 в 16:16)
| | Да, пожалйуйста! Когда хотят понять и что то еще при этом и сами пишут, всегда поможем разобраться, сами с этого начинали. | |
|
|
|