Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2015, 13:50   #1
Bayern_M
Форумчанин
 
Регистрация: 18.03.2015
Сообщений: 114
По умолчанию Си. Последний символ в строке

Здравствуйте!
Работаю с распознаванием дискретных сигналов из файла. Сигналы бывают вида 0->1 и 1->0. Сообщения в файле лежат в json формате, поэтому библиотечная json функция, читая сообщение, возвращает мне указатель на строку типа "0->1". Меня всегда интересует значение после стрелки. Стоит задача как можно красивее обращаться к последнему символу строки с сигналом

Додумался вот до чего, но понимаю, что подобная адресная арифметика - плохой стиль. Подскажите, пожалуйста, если можно сделать лучше..

json_string_value возвращает указатель на строку с сигналом.

Код:
void foo(json_t *msg)
{
    int32_t val;
    char    *str=json_string_value(json_object_get(msg, "value"));

    val = atoi(str + (strlen(str)-1));
}
Заранее спасибо!

Последний раз редактировалось Bayern_M; 28.07.2015 в 13:56.
Bayern_M вне форума Ответить с цитированием
Старый 28.07.2015, 14:03   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Меня всегда интересует значение после стрелки.
strtok() применить не желаешь? указать в нем > и порядок.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.07.2015, 14:10   #3
Bayern_M
Форумчанин
 
Регистрация: 18.03.2015
Сообщений: 114
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
strtok() применить не желаешь? указать в нем > и порядок.
Я так и сделал сначала, только через strrchr. Но мне сказали, что "логичнее" будет смотреть "сразу" на последний символ в строке и проверять что там (0, 1 или мусор). Вот я и думаю, что такое это "сразу".
Bayern_M вне форума Ответить с цитированием
Старый 28.07.2015, 14:15   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну...
Наверное имелось ввиду такое:
Код:
int i=strlen(s);
if(i>0)
  s[i-1] - указывает на последний символ;
В целом логично, если символ действительно один.
Впрочем если у тебя строка одной и той же длины - 4 символа, как ты показал, то можно и сразу побыдлокодить : s[3] написать
Где s - *char
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.07.2015, 14:34   #5
Bayern_M
Форумчанин
 
Регистрация: 18.03.2015
Сообщений: 114
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну...
Наверное имелось ввиду такое:
Код:
int i=strlen(s);
if(i>0)
  s[i-1] - указывает на последний символ;
В целом логично, если символ действительно один.
Впрочем если у тебя строка одной и той же длины - 4 символа, как ты показал, то можно и сразу побыдлокодить : s[3] написать
Где s - *char
Ваш красивый вариант одобрен - большое спасибо
Bayern_M вне форума Ответить с цитированием
Старый 28.07.2015, 14:44   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Да не за что )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.12.2022, 17:07   #7
MASANICH
Новичок
Джуниор
 
Регистрация: 21.12.2022
Сообщений: 1
Хорошо

Ваш ответ мне очень помог в обучении программированию, в одном из заданий на курсе CS50.
MASANICH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить последний символ ячейки andre344 Microsoft Office Excel 10 14.09.2020 16:10
первый и последний символ в строке AndreyF Общие вопросы Delphi 10 03.08.2016 12:09
Как удалить последний символ в строке? C++ Builder Женька Good Помощь студентам 3 30.12.2012 12:55
Как заменить последний символ в строке? artemavd Общие вопросы Delphi 16 01.09.2012 18:49
Assembler!!! Заменить на символ ‘!’ каждый 3тий символ в строке. Leon9313 Помощь студентам 0 24.04.2012 13:02