我有一个程序从文本文件中读取行并将其放入列表中。每行上的单词分类为命令(添加或删除元素),位置,产品和价格。他们总是按照这个顺序。有些线路没有价格或产品,只有命令和位置。我正确解析前几行的行,但如果文本文件缺少几个单词,例如,不告诉我们价格或产品只是命令和位置,我得到一个段错误。有没有办法让我检查文本文件中的一行是否更短,以便我只能解析那里的元素?
文本文件如下所示:
add 0 staples 2
add 1 paper 4
add 1 tape 3
add 3 paperclips 2
remove 2
remove 0
要解析的功能如下。
while (fgets (buff, 140, test))
{
token = strtok(buff, " ");
instructions = malloc(sizeof(char)*strlen(token)+1);
strcpy(instructions, token);
token = strtok(NULL, " ");
listPosition = atoi(token);
token = strtok(NULL, " ");
product = malloc(sizeof(char)*strlen(token)+1);
strcpy(product,token);
token = strtok(NULL, " ");
price = atoi(token);
答案 0 :(得分:0)
为每一行使用分隔符。读取每一行到分隔符然后解析它。您还可以在输入中使用分隔符后使用分隔符。例如command;product;price; #
。
选择在您正常阅读时不会显示的分隔符。
答案 1 :(得分:0)