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)
在这里,我想将内容加载到结构变量而不是字符缓冲区.我怎么能做到这一点?
那么,一个可能的解决方案是
使用从文件中读取完整的一行fgets().
基于所需的分隔符[ tab在您的情况下]使用标记化输入缓冲区strtok().
将内存(malloc()/realloc())分配给结构的指针变量.
将标记化输入复制到成员变量中.
注意:1.fgets()读取并存储尾随\n.2.请仔细检查使用方法strtok().输入字符串应该是可变的.3.在使用之前将内存分配给指针.IMO,使用静态分配的数组作为struct employee成员变量.