Вы можете использовать strtok
для tokenize вашей строки на основе разделителя, а затем strcpy
указатель на токен, возвращенный в ваш массив name
.
В качестве альтернативы можно использовать strchr
, чтобы найти расположение запятой, а затем использовать memcpy
скопировать части строки до и после этого момента в ваш name
массив. Этот способ также сохранит вашу начальную строку, а не замалчивает ее так, как strtok
. Он также будет более потокобезопасным, чем использование strtok
.
Примечание: потокобезопасная альтернатива strtok
является strtok_r
, однако, что декларируется как часть стандарта POSIX. Если эта функция недоступна для вас, может быть аналогичная для вашей среды.
EDIT: Другой способ заключается в использовании sscanf
, однако вы не сможете использовать формат %s
спецификатор для первой строки, вы бы вместо этого использовать спецификатор с набором символов, не совпадают против (','
). Поскольку это домашнее задание (и действительно просто), я позволю вам понять это.
EDIT2: Кроме того, ваш массив должен быть char name[2][100]
для массива из двух строк, каждая из 100 char
с размером. В противном случае, с тем, как у вас есть, у вас будет массив из 100 строк, каждый из которых имеет размер 2 char
.
Надеюсь, это домашняя работа, потому что не у каждого есть имя и фамилия. –
И если это не домашнее задание, почему бы не использовать скриптовый язык? –
Возможный дубликат [Разделение строки по пробелу в C] (http://stackoverflow.com/questions/323285/splitting-a-string-by-space-in-c) –