Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
69 / 62 / 13
Регистрация: 10.01.2012
Сообщений: 508

Проблема с удалением первого символа строки

24.02.2019, 19:37. Показов 1572. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На входе:
incoming_message

1551023928838^orderid: 1^newstopid: 0^drivershift: 51^ordertype: 2^accept: 0^accepttime: 2019-02-24 15:57:50^driverstart: 2019-02-24 15:57:50^waitingstart: null^podachatime: 2019-02-24 15:57:50^completetime: 2019-02-24 15:58:33^zonefrom: 0^stopid: 0^zoneto: 0^route: null^distance: 0,00^distcity: 0,00^distsuburb: 0,00^waittime: 54,00^taxiprice: 0.01^endtask: 55^atdaIDopen: 1551023871869^atdaIDclose: 1551023928838^

отделяю например такое accepttime: 2019-02-24 15:57:50

затем дроблю на Var Val
Value при этом имеет первым символом пробел. Его то, родного, и требуется удалить.
Но при удалении не все радостно (внизу дебаг)

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
char separator[] = "^", doublecoma_separator[] = ":" ;
 
 
 
    for (token = strtok(incoming_message, separator); token != NULL; token = strtok(NULL, separator))
    {
        if (token == NULL)
        {
            break;
        }
        //  debug("token=[%s]", token);
        var = strtok_r(token, doublecoma_separator, &value);
       char trueValue[strlen(value)];
    
        debug("RAW VALUE =[%s]",value);
         memmove(trueValue, value + 1, strlen(value) - 1);
//        for (int i = 1; i < strlen(value); i++)
//        {
//            trueValue[i - 1] = value[i];
//        }
        debug("var=[%s] value=[%s]", var, trueValue);
        OrderMasInsert(orderATDA, var, trueValue);
    }


Выхлоп на Debian 8
Кликните здесь для просмотра всего текста
DEBUG: RAW VALUE =[ 63283]
DEBUG: var=[orderid] value=[63283]
DEBUG: RAW VALUE =[ 0]
DEBUG: var=[newstopid] value=[0]
DEBUG: RAW VALUE =[ 51]
DEBUG: var=[drivershift] value=[51]
DEBUG: RAW VALUE =[ 2]
DEBUG: var=[ordertype] value=[2]
DEBUG: RAW VALUE =[ 0]
DEBUG: var=[accept] value=[0]
DEBUG: RAW VALUE =[ 2019-02-24 12:25:50]
DEBUG: var=[accepttime] value=[2019-02-24 12:25:50]
DEBUG: RAW VALUE =[ 2019-02-24 12:25:50]
DEBUG: var=[driverstart] value=[2019-02-24 12:25:50]
DEBUG: RAW VALUE =[ null]
DEBUG: var=[waitingstart] value=[null]
DEBUG: RAW VALUE =[ 2019-02-24 12:25:50]
DEBUG: var=[podachatime] value=[2019-02-24 12:25:50]
DEBUG: RAW VALUE =[ 2019-02-24 12:26:02]
DEBUG: var=[completetime] value=[2019-02-24 12:26:02]
DEBUG: RAW VALUE =[ 0]
DEBUG: var=[zonefrom] value=[0]
DEBUG: RAW VALUE =[ 0]
DEBUG: var=[stopid] value=[0]
DEBUG: RAW VALUE =[ 0]
DEBUG: var=[zoneto] value=[0]
DEBUG: RAW VALUE =[ null]
DEBUG: var=[route] value=[null]
DEBUG: RAW VALUE =[ 0,00]
DEBUG: var=[distance] value=[0,00]
DEBUG: RAW VALUE =[ 0,00]
DEBUG: var=[distcity] value=[0,00]
DEBUG: RAW VALUE =[ 0,00]
DEBUG: var=[distsuburb] value=[0,00]
DEBUG: RAW VALUE =[ 0,00]
DEBUG: var=[waittime] value=[0,00]
DEBUG: RAW VALUE =[ 0.01]
DEBUG: var=[taxiprice] value=[0.01]
DEBUG: RAW VALUE =[ 55]
DEBUG: var=[endtask] value=[55]
DEBUG: RAW VALUE =[ 1551011151959]
DEBUG: var=[atdaIDopen] value=[1551011151959U]
DEBUG: RAW VALUE =[ 1551011178629]
DEBUG: var=[atdaIDclose] value=[1551011178629U]


Проблема тут видна DEBUG: var=[atdaIDopen] value=[1551011151959U] DEBUG: var=[atdaIDclose] value=[1551011178629U]


Выхлоп на Debian 9 еще печальнее
DEBUG: RAW VALUE =[ 1]
DEBUG: var=[orderid] value=[1�G #H���G����]
DEBUG: RAW VALUE =[ 0]
DEBUG: var=[newstopid] value=[0�G #H���G����]
DEBUG: RAW VALUE =[ 51]
DEBUG: var=[drivershift] value=[51G #H���G����]
DEBUG: RAW VALUE =[ 2]
DEBUG: var=[ordertype] value=[2�G #H���G����]
DEBUG: RAW VALUE =[ 0]
DEBUG: var=[accept] value=[0�G #H���G����]
DEBUG: RAW VALUE =[ 2019-02-24 15:57:50]
DEBUG: var=[accepttime] value=[2019-02-24 15:57:50 #H���G����]
DEBUG: RAW VALUE =[ 2019-02-24 15:57:50]
DEBUG: var=[driverstart] value=[2019-02-24 15:57:50 #H���G����]
DEBUG: RAW VALUE =[ null]
DEBUG: var=[waitingstart] value=[null#H���G����]
DEBUG: RAW VALUE =[ 2019-02-24 15:57:50]
DEBUG: var=[podachatime] value=[2019-02-24 15:57:50 #H���G����]
DEBUG: RAW VALUE =[ 2019-02-24 15:58:33]
DEBUG: var=[completetime] value=[2019-02-24 15:58:33 #H���G����]
DEBUG: RAW VALUE =[ 0]
DEBUG: var=[zonefrom] value=[0�G #H���G����]
DEBUG: RAW VALUE =[ 0]
DEBUG: var=[stopid] value=[0�G #H���G����]
DEBUG: RAW VALUE =[ 0]
DEBUG: var=[zoneto] value=[0�G #H���G����]
DEBUG: RAW VALUE =[ null]
DEBUG: var=[route] value=[null#H���G����]
DEBUG: RAW VALUE =[ 0,00]
DEBUG: var=[distance] value=[0,00#H���G����]
DEBUG: RAW VALUE =[ 0,00]
DEBUG: var=[distcity] value=[0,00#H���G����]
DEBUG: RAW VALUE =[ 0,00]
DEBUG: var=[distsuburb] value=[0,00#H���G����]
DEBUG: RAW VALUE =[ 54,00]
DEBUG: var=[waittime] value=[54,00H���G����]
DEBUG: RAW VALUE =[ 0.01]
DEBUG: var=[taxiprice] value=[0.01#H���G����]
DEBUG: RAW VALUE =[ 55]
DEBUG: var=[endtask] value=[55G #H���G����]
DEBUG: RAW VALUE =[ 1551023871869]
DEBUG: var=[atdaIDopen] value=[1551023871869�]
DEBUG: RAW VALUE =[ 1551023928838]
DEBUG: var=[atdaIDclose] value=[1551023928838�]
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.02.2019, 19:37
Ответы с готовыми решениями:

Перенос строки с данными на другой лист и с дальнейшим удалением всей строки с первого листа
Добрый день! Помогите решить задачку, а именно на листе 1 есть таблица с данными: A-Дата, B-Код товара, C-Клиент, ...

Ver 7.7 Проблема набора первого символа в поле ввода
Здравствуйте! Кто-нибудь встречался с ситуацией: в ver 7.7 1С на форме списка справочника есть поле ввода(для поиска по строке). Задача...

Вывести все символы исходной строки а$, начиная от первого заданного символа x$ до последнего заданного символа y$
Мужики, спасайте ^^ 2)Вывести все символы исходной строки а$, начиная от первого заданного символа x$ до последнего заданного символа...

6
725 / 224 / 73
Регистрация: 01.03.2011
Сообщений: 643
24.02.2019, 21:31
zoleg,
Цитата Сообщение от zoleg Посмотреть сообщение
memmove(trueValue, value + 1, strlen(value) - 1);
Не вычитайте единичку, \0 тоже нужен.
Ну и проверку token == NULL из тела цикла убрать, а для var и value наоборот добавить. Я б конечно для очистки совести и удаляемый пробел проверял...
0
69 / 62 / 13
Регистрация: 10.01.2012
Сообщений: 508
25.02.2019, 21:26  [ТС]
Не вычитайте единичку, \0 тоже нужен.
Цитата Сообщение от prik Посмотреть сообщение
Не вычитайте единичку, \0 тоже нужен.
Пробовал и отнимать и не отнимать и даже добавлял. Просто вид крякозяблов меняется - режется либо первы. либо к последнему дублируется последний символ (при + 1).
В общем извращался как только можно придумать и даже такие подстановки делал, которые заведомо неверны, но все равно не получил нужного. Пробовал и то что закоментенно, но то же самое получается.

Я в шоке и ступоре.

Вроде все верно, но криминал налицо.
0
725 / 224 / 73
Регистрация: 01.03.2011
Сообщений: 643
25.02.2019, 21:54
Лучший ответ Сообщение было отмечено zoleg как решение

Решение

Цитата Сообщение от zoleg Посмотреть сообщение
Пробовал и отнимать и не отнимать и даже добавлял.
Что-то вы не то пробовали...
У вас сейчас так:
C
1
2
3
4
5
  // пусть char value[] = {'1', '2', '3', 0}; цель получить "23"
  char trueValue[strlen(value)]; // char trueValue[3];
  memmove(trueValue, value + 1, strlen(value) - 1); // memmove(trueValue, "23", 2);
  // т.е. забыли \0 - исправить на
  memmove(trueValue, value + 1, strlen(value));  //memmove(trueValue, "23", 3);
Хотя, на 1й взгляд вообще не понятно зачем вам этои массив и пляски с memmove(), когда можно просто написать
C
1
OrderMasInsert(orderATDA, var, value + 1);
0
69 / 62 / 13
Регистрация: 10.01.2012
Сообщений: 508
25.02.2019, 22:07  [ТС]
Щас попробую.

Добавлено через 3 минуты
Не катит.

DEBUG: ordnum=[472]
DEBUG: varval=[, `atdaIDclose`='1551011178629U']
DEBUG: varval=[, `atdaIDopen`='1551011151959U']

Добавлено через 3 минуты
C
1
2
3
4
5
6
7
8
9
10
11
    for (token = strtok(incoming_massage, separator); token != NULL; token = strtok(NULL, separator))
    {
        if (token == NULL)
        {
            break;
        }
        //  debug("token=[%s]", token);
        var = strtok_r(token, doublecoma_separator, &value);
        OrderMasInsert(orderATDA, var, value + 1);
 
    }
0
725 / 224 / 73
Регистрация: 01.03.2011
Сообщений: 643
25.02.2019, 22:11
Цитата Сообщение от zoleg Посмотреть сообщение
Не катит.
Код, который сейчас и строку данных на которой воспроизводиться покажите плиз
0
69 / 62 / 13
Регистрация: 10.01.2012
Сообщений: 508
26.02.2019, 07:59  [ТС]
НЕ,НЕ!

Кажется все ОК. Это я лоханулся, В код побыструхе внес, но не перекомпилил, а запустил старый.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.02.2019, 07:59
Помогаю со студенческими работами здесь

Строки. Подсчитать количество вхождений первого символа строки в другую строку
Помогите решить. Условие: Подсчитать количество вхождений первого символа строки в другую строку. Вывести саму строку и результат...

Проблема с переносом символа в начало строки, сохраняя первоначальную длину строки
Добрый вечер! Нужно дополнить код.. Задание такое: В каждой строке удалить лишние пробелы между словами и разместить их по левому краю,...

Вывод первого символа строки
Эта инструкция mov ah, 3fh int 21h заносит введённую строку в начало сегмента данных (по адресу ds:) Почему эта программа ...

Вывести коды первого и последнего символа строки
7)Дана непустая строка. Вывести коды ее первого и последнего символа. 10)Во всех заданиях данного пункта предполагается, что исходные...

Рассортировать строки по алфавиту на основе первого символа
Доброго времени суток. Подскажите как сравнить строки(в файле как уточнение) по алфавиту. Нужно рассортировать строки по алфавиту на...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru