用逗号分隔输入行

Tyl*_*Ben 0 c string split input

我正在将文件的内容读入2D数组.该文件的类型如下:

FirstName,Surname
FirstName,Surname
Run Code Online (Sandbox Code Playgroud)

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

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

char name[100][2];
Run Code Online (Sandbox Code Playgroud)

       Column1     Column2
Row 0  FirstName   Surname
Row 1  FirstName   Surname
Run Code Online (Sandbox Code Playgroud)

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

Aus*_*oke 5

您可以使用strtok基于分隔符来标记字符串,然后strcpy将指向令牌的指针返回到name数组中.

或者,您可以使用strchr查找逗号的位置,然后使用memcpy将此点之前和之后的字符串部分复制到name数组中.这种方式也将保留您的初始字符串,而不是像它那样破坏它strtok.它也比使用更安全strtok.

注意:线程安全的替代方案strtokstrtok_r,但是它被声明为POSIX标准的一部分.如果您无法使用该功能,则可能会为您的环境定义类似的功能.

编辑:另一种方法是使用sscanf,但是您将无法使用%s第一个字符串的格式说明符,而是必须使用带有一组字符的说明符与(',')不匹配.既然它是家庭作业(而且非常简单),我会让你弄明白.

EDIT2:另外,你的数组应该是char name[2][100]一个包含两个字符串的数组,每个字符串char的大小为100 s.否则,按照你的方式,你将拥有一个包含100个字符串的数组,每个字符串char大小为2 秒.