【问题标题】:Splitting input lines at a comma以逗号分隔输入行
【发布时间】:2012-03-01 03:02:18
【问题描述】:

我正在将文件的内容读入二维数组。文件类型:

FirstName,Surname
FirstName,Surname

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

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

char name[100][2];

       Column1     Column2
Row 0  FirstName   Surname
Row 1  FirstName   Surname

我真的为此苦苦挣扎,找不到任何我能理解的帮助。

【问题讨论】:

  • 我希望这是作业,因为不是每个人都有名字和姓氏。
  • 如果这不是家庭作业,为什么不使用脚本语言?

标签: c string input split


【解决方案1】:

您可以使用strtok 根据分隔符对字符串进行标记,然后使用strcpy 指向返回到name 数组中的标记的指针。

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

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

编辑: 另一种方法是使用sscanf,但是您不能对第一个字符串使用%s 格式说明符,而必须使用说明符带有一组不匹配的字符 (',')。既然这是家庭作业(而且很简单),我会让你弄清楚。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2020-12-09
    • 2012-07-15
    • 1970-01-01
    相关资源
    最近更新 更多