token=strtok(m,'-');
должно генерировать предупреждение компилятора, поскольку второй параметр strtok()
- это const char *
, указывающий на несколько разделителей, а не один char
разделитель:
char *strtok(char *str, const char *delim);
Код ASCII '-'
равен 0x2D, поэтому передача его в качестве второго параметра strtok()
приведет к разыменованию strtok()
адреса 0x0000002D, что вызовет ошибку сегмента или нарушение доступа в большинстве современных операционных систем.Чтобы исправить это, используйте строковый литерал вместо символьного литерала: token=strtok(m,"-");
Также существует проблема с тем, как распределяется возвращаемое значение ReadName()
, о чем другие говорили в своих ответах.