将文件中的一行拆分为两个字符串

时间:2017-12-09 04:57:41

标签: c

很多人都在苦苦挣扎。我正在尝试将文件读入结构数组,每行被拆分为结构的两个字符串属性。这是我尝试过的。

#include <stdio.h>
#define KEYSIZE   8
#define DATASIZE 56

struct Record {
    char key[KEYSIZE];
    char data[DATASIZE];
};

int main(int argc, char **argv[])
{
    if (argc!=2)
    {
        printf("Please enter a file name");
        return 0;
    }
    FILE *recordFile=fopen(argv[1], "r");
    char ch;
    int lines =0;

    fseek(recordFile, 0, SEEK_END);
    lines = ftell(recordFile);
    fseek(recordFile, 0, SEEK_SET);
    lines=lines/64;

    struct Record recArr[lines]; 

    char  buffer[9];
    char buffer2[57];
    fgets(buffer, 9, recordFile);
    for(int i=0;i<8;i++)
    {
        recArr[0].key[i]=buffer[i];
    }
    fgets(buffer2, 57, recordFile);
    for(int i=0;i<57;i++)
    {
        recArr[0].data[i]=buffer2[i];
    }

}

请注意,我只是编辑数组的第一个成员以进行测试。我当前的实现为我获取了data属性的正确结果,但是key属性变成了整行,这是我无法弄清楚的。只有在我编辑数据属性时才会发生这种情况。如果删除编辑数据属性的部分,则键属性会正确显示该行的前8个字符。

0 个答案:

没有答案