如何在c中拆分文本文件?

时间:2018-04-20 09:38:29

标签: c text file-io

我正在进行Socket编程,我需要读取文本文件,然后我需要使用制表符空格拆分该文本文件,之后我需要将每列分配给定义的数组。

但是在我的代码中所有字段都是正确的,除了价格列,我的价格数组总是返回0

如何解决这个问题?

数组声明代码

'purchase' => {
  'items_attributes' => [
    {
      'purchase_id' => '1'
    },
    {
      'purchase_id' => '2'
    }
  ]
}

以下代码是拆分文本文件并将值分配给创建的数组

params.require(:purchase).permit(item_attributes: [:purchase_id])

我的文本文件如下

int id[10];
char name[10][50];
int qrty[10];
double price[10];

1 个答案:

答案 0 :(得分:2)

如果且仅当a.txt文件中的字段由TAB(而不是空格)分隔时,这对我有用:

#include <stdio.h>

int main()
{
  char line[1000];
  FILE *fp = fopen("a.txt", "r");

  int pno, qty; 
  double uprice;
  char pname[100];

  while (fgets(line, sizeof(line), fp)) {
    sscanf(line, "%d\t%[^\t]\t%d\t%lf", &pno, &pname, &qty, &uprice);
    printf("%d %s %d %lf\n", pno, pname, qty, uprice);
  }
}

您甚至可以使用line

删除fscanf缓冲区
 do
 {
    if (fscanf(fp, "%d %s %d %lf", &pno, &pname, &qty, &uprice) == 4)
      printf("%d %s %d %lf\n", pno, pname, qty, uprice);
 } while (!feof(fp));

免责声明:为简洁起见,此处不做任何错误检查。