[英]Parsing a Text File with Lines of Different Sizes in C
我有一個程序可以從文本文件中讀取行並將其放入列表中。 每行上的單詞分為命令(添加或刪除元素),位置,產品和價格。 他們總是按順序排列。 有些行沒有價格或產品,只有命令和位置。 我為前幾行正確地解析了這些行,但是例如,如果文本文件缺少幾個單詞,僅告訴命令或位置的價格或乘積不告訴我們,則會出現段錯誤。 有沒有一種方法可以檢查文本文件中的一行是否較短,以便我只能解析其中的元素?
文本文件如下所示:
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);
每行使用定界符。 讀取每一行直到定界符,然后進行解析。 您也可以在每個輸入之后使用定界符。 如command;product;price; #
command;product;price; #
。
選擇不會在您的普通輸入中顯示的定界符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.