【发布时间】:2017-02-16 19:55:12
【问题描述】:
我正在尝试将格式与 CSV 类似的文本文件输入到多维数组中,其中数组的每个元素都是每行的单词数组。任何帮助将不胜感激!
例如,文件 input.txt 可能包含:
Carrot, Potato, Beetroot, Courgette, Broccoli
Dad's oranges, Apple, Banana, Cherry
Pasta, Pizza, Bread, Butter
我希望从中得到的输出数组的结构是:
[[Carrot, Potato, Beetroot, Courgette, Broccoli], [Dad's oranges, Apple, Banana, Cherry], [Pasta, Pizza, Bread, Butter]]
所以你就行了:
printf("%s", inputArray[1][0]);
将打印:
Dad's oranges
【问题讨论】:
-
我建议
strtok的分隔符字符串应该是", \t\r\n",但“爸爸的橙子”包含一个空格。因此,您必须将该空格从分隔符中删除,并在获取每个标记后去掉任何前导空格。 -
您正在观察什么输出?你期望的输出是什么?
-
@rootkea 目前我正在观察我无法解释的奇怪输出。对于
printf("%s", inputArray[0]);,我会回复Pasta。我期待第一项,Carrot。 -
@hardanger 是的!那是因为您没有分配内存来存储以前的令牌。但由于
inputArray[0]指向line[0],它现在包含Pasta,它覆盖了之前的Carrot和Dad's oranges,请参阅我的答案了解更多详情。 -
您在
ptr和malloc之间使用了==而不是=。请参阅我的答案中的更新代码。