簡體   English   中英

在C中解析具有不同大小的行的文本文件

[英]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; #

選擇不會在您的普通輸入中顯示的定界符。

  1. 使用fgets函數獲取行
  2. 編寫一個解析函數,該函數需要一行,並給您4個標記(命令,位置,乘積等)。 您可以使用空間作為分度符。
  3. 然后,您知道手頭上有什么,沒有什么

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM