В дополнение к вашей проблеме с памятью, я думаю, вы не понимаете, что делает atoi
.Он анализирует строковое представление числа и возвращает эквивалентное значение типа int, например, «10000» => 10000.Я думаю, что вы думаете, что это даст вам значение ASCII символа, например, "A" => 65.
Так как у вас есть char *
, и вы (я думаю) предполагаете, что он содержитодиночный символ, вы могли бы просто сделать это:
delimCharacter = *(argv[3]);
Однако, похоже, нет необходимости использовать промежуточный шаг для присвоения этого значения переменной char
.Если конечная цель состоит в том, чтобы delim
указывал на символ, который является разделителем, то, похоже, это все, что вам нужно сделать:
delim = argv[3];
Это не только удаляет ненужный код, но и означает, чтовам больше не нужно было бы выделять дополнительную память для указания delim.
Я бы также объявил delim как const char *
, так как я предполагаю, что нет причин для его изменения.