如何从每一行读取文件中的数据并将其存储到结构数组中

时间:2018-07-31 08:20:07

标签: c

下面是我的代码,我一直在为这部分工作,创建了一个可以处理客户端数据的C套接字服务器,但是在文件处理方面遇到了问题。我想从文件中选取数据并将其存储到特定位置的结构中,然后根据所选择的数据擦除文件。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "struct.h"

struct student {
    char command[10];
    char value[50];
    char user[50];
};

int main() {
    int size, i;
    struct student s1[256];
    FILE *file = fopen("file.txt", "r");

    if (file == NULL) {

        printf("Error in reading student data");
        return 1;
    }
    size = 0;

    while(fscanf(file,"%s,%s,%s",
                 s1[size].command,
                 s1[size].value,
                 s1[size].user) != EOF) {

        printf("%s%s%s\n",s1[size].command,s1[size].value,s1[size].user);
        printf("%s\n",s1[size].command);
        size++;
    }

    fclose(file);

    return 0;
}

我想从文件中选择包含以下信息的数据,并将其存储在结构数组的特定部分

a,w,a
r,e,1

即如果我存储

a in s1[0].command
w in s1[0].value
a in s1[0].user

r in s1[1].command
e in s1[1].value
1 in s1[1].user

但是当我尝试运行我的代码时,它会打印

a, w, a in s1[0].command

r, e, 1 in s1[1].command

所以我很乐意寻求帮助,因为我尝试了谷歌搜索,但找不到解决方案。

1 个答案:

答案 0 :(得分:1)

"%s"格式读取 以空格分隔的 “单词”。

如果没有空格分隔“单词”,则必须使用其他方式来解析输入。例如,通过reading the whole line,然后使用类似strtok的方式来“标记”字符串。

确保输入格式以空格分隔。