用逗号分隔输入行

时间:2012-03-01 03:02:18

标签: c string input split

我正在将文件的内容读入2D数组。该文件的类型为:

FirstName,Surname
FirstName,Surname

等。这是一项家庭作业,我们可以假设每个人都有名字和姓氏。

如何使用逗号分割线条,以便在2D数组中看起来像这样:

char name[100][2];

       Column1     Column2
Row 0  FirstName   Surname
Row 1  FirstName   Surname

我真的很挣扎,无法找到任何我能理解的帮助。

1 个答案:

答案 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