2012-03-01 2 views
0

Я читаю содержимое файла в 2D-массив. Файл типа:Разделение входных строк в запятой

FirstName,Surname 
FirstName,Surname 

и т.д. Это домашнее задание упражнения, и мы можем предположить, что каждый имеет имя и фамилию.

Как бы я идти о расщеплении линии с помощью запятой, так что в 2D массив это будет выглядеть следующим образом:

char name[100][2]; 

с

 Column1  Column2 
Row 0 FirstName Surname 
Row 1 FirstName Surname 

Я действительно борется с этим и не мог Не найди никакой помощи, которую я мог бы понять.

+1

Надеюсь, это домашняя работа, потому что не у каждого есть имя и фамилия. –

+0

И если это не домашнее задание, почему бы не использовать скриптовый язык? –

+0

Возможный дубликат [Разделение строки по пробелу в C] (http://stackoverflow.com/questions/323285/splitting-a-string-by-space-in-c) –

ответ

5

Вы можете использовать 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.

Смежные вопросы