我正在将文件的内容读入2D数组。该文件的类型为:
FirstName,Surname
FirstName,Surname
等。这是一项家庭作业,我们可以假设每个人都有名字和姓氏。
如何使用逗号分割线条,以便在2D数组中看起来像这样:
char name[100][2];
与
Column1 Column2
Row 0 FirstName Surname
Row 1 FirstName Surname
我真的很挣扎,无法找到任何我能理解的帮助。
答案 0 :(得分:5)
您可以使用strtok
根据分隔符对字符串进行标记,然后strcpy
指向返回到name
数组中的标记的指针。
或者,您可以使用strchr
查找逗号的位置,然后使用memcpy
将此点之前和之后的字符串部分复制到name
数组中。这种方式也将保留您的初始字符串,而不是像strtok
那样破坏它。它也比使用strtok
更安全。
注意: strtok
的线程安全替代方法是strtok_r
,但是它被声明为POSIX标准的一部分。如果您无法使用该功能,则可能会为您的环境定义类似功能。
编辑:另一种方法是使用sscanf
,但是您无法使用第一个字符串的%s
格式说明符,而是使用带有一组字符的说明符与(','
)不匹配。因为它是家庭作业(而且非常简单),我会让你弄明白。
EDIT2:此外,对于包含两个字符串的数组,您的数组应为char name[2][100]
,每个字符串的大小为100 char
。否则,按照你的方式,你将拥有一个包含100个字符串的数组,每个字符串大小为2 char
。