Мне пришлось разделить полезную нагрузку сетевых данных на символ «новой строки» или «перевода строки» (10 декабря, шестнадцатеричный 0x0A).Поэтому я попытался использовать функцию strtok (), с которой я столкнулся с несколькими проблемами, когда хотел создать строку константных символов с символом «новая строка».
Proto:
`strtok(char * StringToSplit, const char * Delimiters)`
Это сделало неверный инициализатор:
`const char delim[] = 10;`
Это дало предупреждение о создании указателя из int без приведения;Несмотря на то, что
printf("Delim: %x", delim)
показал правильное значение delim (0xa), приложение аварийно завершает работу при использовании в strtok ().
`const char * delim = 10;`
Нет предупреждений или ошибок, printf («Delim:% x», delim) дал правильное значение, но strtok () не работал (как я и ожидал).
`char delim = 10;`
`(ofc strtok(..., &delim))`
Это похоже назадание, но я все еще получил предупреждение о передаче неконстантного ptr-символа, где ожидалось, что const char ptr будет выполнять функцию strtok ().
`char delim[] = "#";`
`delim[0] = 10;`
Наконец, похоже, это работает без предупреждений.
`char tmp[] = "#";`
`tmp[0] = 10;`
`const char *delim = tmp;`
Вопрос в том, какой самый простой и элегантный способ передать такой невидимый символ в функцию strtok ()?Мне кажется, что это просто замешанный код.