将制表符分隔文件读取到C中的结构

Smi*_*yne 3 c struct file input tab-delimited-text

我有一个带制表符分隔数据的文件.我想把每一行都读成一个结构.我有一个代码来读取数据到char缓冲区.但我想将数据加载到Structure中.

这是我的样本数据.

empname1\T001\T35\tcity1

empname2\T002\T35\tcity2

我的结构定义.

struct employee
{
  char *empname;
  char *empid;
  int age;
  char *addr;

};
Run Code Online (Sandbox Code Playgroud)

我的示例程序将数据读取到char数组中buffer

char buffer[BUF_SIZE];      /* Character buffer */
    input_fd = open (fSource, O_RDONLY);
    if (input_fd == -1) {
       perror ("open");
        return 2;
    }

    while((ret_in = read (input_fd, &buffer, BUF_SIZE)) > 0){

         // Do Some Process 
    }
Run Code Online (Sandbox Code Playgroud)

在这里,我想将内容加载到结构变量而不是字符缓冲区.我怎么能做到这一点?

Sou*_*osh 7

那么,一个可能的解决方案是

  1. 使用从文件中读取完整的一行fgets().

  2. 基于所需的分隔符[ tab在您的情况下]使用标记化输入缓冲区strtok().

  3. 将内存(malloc()/realloc())分配给结构的指针变量.

  4. 将标记化输入复制到成员变量中.

注意:1.fgets()读取并存储尾随\n.2.请仔细检查使用方法strtok().输入字符串应该是可变的.3.在使用之前将内存分配给指针.IMO,使用静态分配的数组作为struct employee成员变量.