прочитать строку известной длинны, без дополнительных аллокаций и нуль терминейта? кажется, тут можно как-то арифметеку указателей заюзать, но я не догоняю.
например, есть строка:
char *s = "fir-st-second:third";
необходимо взять три слова в итоге: "third, second, fir-st" без разделителей справа налево, т.к. у первого слова могут быть разделители в самом слове.
я начал юзать strrchr и нуль терминейт, но в итоге у меня какая-то jopa выходит и часто сигфолты прилетают.
код вида:
char *tmp = strdup(s);
t = strrchr(tmp, ‘:‘);
*t++ = '\0';
char *third = t;
tmp = ++t;
t = strrchr(tmp, ‘-‘);
*t++ = '\0';
char *second = t;
tmp = ++t;
…
https://t.me/lame_c
Обсуждают сегодня