Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
Z3JheSBoYXQ=
339 / 234 / 83
Регистрация: 08.07.2012
Сообщений: 577
1

Получить индекс позиции символа строки на которую ссылается указатели fpos, npos

23.08.2012, 22:09. Просмотров 1366. Ответов 7
Метки нет (Все метки)

C
1
2
3
4
5
6
7
8
9
10
#define START "777"
#define END "888"
 
char string[] ="werertdxc777dh asdgasdfaefxbfghs888df dsfgsdfasdfxfg";
char * fpos, * npos;
 
if ( ( fpos = strstr( string, START)) && ( npos = strstr (string, END ) ) ) {
 
//  some code
}
вопросы.
1. Как получить индекс позиции символа строки на которую ссылается указатели fpos, npos?
2. Как вычислить размерность содержимого между позициями указателей (start и end )в приведенном примере ( это для наглядности )?

Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.08.2012, 22:09
Ответы с готовыми решениями:

Ввод строки S и символа С. Результат: число повторений символа С и порядковые позиции вхождения этого символа в строку
Нужно составить программу, в которой пользователь вводит вручную строку S и символ C. Результатом...

Удаление памяти, на которую ссылается указатель
Всем привет. Такой вопрос, что станет с указателем на объект, если этот объект удалить через...

Запись в Memo( индекс - это индекс кнопки, на которую нажали) числа 1
Мне нужно записать в Memo с индексом таким же, какой и у кнопки, которую только что нажали, только...

Откуда берется значение указателя после удаления памяти на которую он ссылается?
Всем привет. Почему при удалении памяти указатель еще работает? Пример программы: #include...

7
Псевдослучайный
1934 / 1135 / 96
Регистрация: 13.09.2011
Сообщений: 3,204
23.08.2012, 22:24 2
Адресная арифметика же. Конечный адрес - стартовый адрес = количество элементов между этими адресами(включая тот, на который указывает начальный адрес). Кстати, в коде косяк, завершающую подстроку логично искать после стартовой, да.
1
59 / 59 / 8
Регистрация: 29.06.2012
Сообщений: 188
23.08.2012, 22:27 3
1.
C
1
int ind = fpos - string;
2.
C
1
int s = abs(npos - fpos);
1
Z3JheSBoYXQ=
339 / 234 / 83
Регистрация: 08.07.2012
Сообщений: 577
23.08.2012, 22:31  [ТС] 4
спасибо.
0
Заблокирован
23.08.2012, 23:16 5
Цитата Сообщение от Leomana Посмотреть сообщение
int s = abs(npos - fpos);
потенциальный segmentation fault. Лушче обработать exeption.
C
1
2
3
int s = (npos < fpos ? -1 : npos - fpos);
if ( s == -1 )
    exeption(...);
0
4845 / 3266 / 465
Регистрация: 10.12.2008
Сообщений: 10,569
24.08.2012, 02:56 6
Цитата Сообщение от alkagolik Посмотреть сообщение
потенциальный segmentation fault
не, адресы - это просто числа, разность просто делится на размер
вместо abs() надо labs()
0
Заблокирован
24.08.2012, 03:19 7
accept, я тебя не понял. Я говорю что в случае npos < fpos при вычитании мы получим очень большое число без знака и с большой вероятностью выскочим за пределы массива, в лучшем случае просто получим неверно вычисленный индекс, что в итоге сломает логику программы.
0
4845 / 3266 / 465
Регистрация: 10.12.2008
Сообщений: 10,569
24.08.2012, 05:44 8
Цитата Сообщение от alkagolik Посмотреть сообщение
Я говорю что в случае npos < fpos при вычитании мы получим очень большое число без знака
разность указателей - целое число со знаком, ptrdiff_t описан в стандарте
его размер зависит от реализации

так как указатели относятся к элементам одного массива, их можно вычитать
модуль даёт расстояние между ними (как бы они не стояли)

прежде чем вычислять расстояние, нужно убедиться, что они в правильном порядке
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.08.2012, 05:44

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как можно узнать размер выделенной динамической памяти, на которую ссылается указатель a?
Скажем я в какой-то момент выделяю память под массив: int *a = new int ; затем память может...

Строки. Дан текст. Найти позиции заданного символа в тексте
Дан текст. Найти позиции заданного символа в тексте

Указатели: вывести значение второго байта четвертого символа строки
Нужна помощь есть строка 12 символов. нужно вывести значение второго байта четвертого символа

Поиск позиции первого вхождения в первую строку какого-либо символа из второй строки
Написать метод, входными параметрами которого являются две строки. Метод должен возвращать позицию...

Сравнение двух текстовых файлов и вывод номера строки и позиции символа, где они отличаются
здравствуйте, уважаемые программисты!!!! пишу с надеждой, что вы мне поможете. дано такое...

Получить индекс строки в массиве и изменить значение строки
Есть файл &quot;$Temp.yml&quot; &gt; В нем 76 строчек &gt; Мне надо найти строку к примеру &quot;interval&quot; &gt; Получить...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.