2012-03-01 85 views
0

我正在將文件的內容讀取到二維數組中。該文件的類型:以逗號分割輸入行

FirstName,Surname 
FirstName,Surname 

等等,這是一個課外練習,我們可以假設,每個人都有一個名字和姓氏。

我怎麼會去使用逗號,這樣在一個二維數組它看起來像這樣分割線:

char name[100][2]; 

 Column1  Column2 
Row 0 FirstName Surname 
Row 1 FirstName Surname 

我真的有這個和couldn掙扎找不到我能理解的任何幫助。

+1

我希望這是作業,因爲不是每個人都有名字和姓氏。 – 2012-03-01 03:05:24

+0

如果這不是作業,爲什麼不使用腳本語言? – 2012-03-01 03:06:04

+0

[在C中通過空格拆分字符串]可能的重複(http://stackoverflow.com/questions/323285/splitting-a-string-by-space-in-c) – 2012-03-01 03:09:17

回答

5

您可以使用strtok根據分隔符來標記字符串,然後strcpy指向返回到name數組中的標記。

或者,您可以使用strchr查找逗號的位置,然後使用memcpy將該點前後的字符串部分複製到您的name陣列中。這種方式也會保留你的初始字符串,不會像strtok那樣破壞它。它也會比使用strtok更線程安全。

注:線程安全的替代strtokstrtok_r,但是這被聲明爲POSIX標準的一部分。如果該功能對您不可用,則可能會爲您的環境定義類似的功能。

編輯:另一種方法是使用sscanf,但您將無法使用%s格式指定爲第一個字符串,你不是必須使用的說明符與一組字符以不匹配針對(',')。由於它是功課(而且非常簡單),我會讓你弄清楚。

EDIT2:此外,您的陣列應該char name[2][100]爲兩個字符串的數組,每個100個char S IN的大小。否則,以您擁有的方式,您將擁有100個字符串的陣列,每個字符串的大小均爲2 char