Strtol, strtod небезопасны?

Кажется, чтоstrtol() а такжеstrtod() эффективно позволяют (и заставляют) отбрасывать константу в строку:

#include <stdlib.h>
#include <stdio.h>

int main() {
  const char *foo = "Hello, world!";
  char *bar;
  strtol(foo, &bar, 10); // or strtod(foo, &bar);
  printf("%d\n", foo == bar); // prints "1"! they're equal
  *bar = 'X'; // segmentation fault
  return 0;
}

Выше я не выполнял никаких кастований сам. Тем не мение,strtol() в основном снимаюconst char * вchar * для меня без каких-либо предупреждений или чего-либо. (На самом деле, это не позволит вам набратьbar какconst char *и поэтому вызывает небезопасное изменение типа.) Разве это не опасно?

Ответы на вопрос(4)

Ваш ответ на вопрос