C - 将文本中的值存储到数组中

标签 c arrays file text io

我试图逐行存储从文件中获取的不同值。文本文件中的行如下所示

100000,player1,long title name
300000,someotherplayer,another long title name
45512845,thisplayer,one more long title name

我想将逗号分隔的每个值存储到三个不同的数组中,(int)number、(str)player_name、(str)title_name。

我在下面有一些代码,但它没有编译。

ptr_file=fopen("text.txt", "r");
char buffer[1000];
int line;
line = 0;

while(fgets(buffer, sizeof(buffer), ptr_file) != NULL){
    char number[line]=strtok(buffer, ",");  
    char player_name[line]=strtok(NULL, ",");
    char title_name[line]=strtrok(NULL, ",");
}

有人可以给我一些建议吗?

最佳答案

所以,您的代码存在一些问题,

你以“o”模式打开文件,我不太确定它是什么,我怀疑你想要“r” strtok 返回一个不能分配给 char[] 的 char *。 第二次运行循环时,您将覆盖缓冲区中的数据。 我会做这样的事情:

struct player {
    int number;
    char player_name[64];
    char title_name[256];
};

int main(void) {
    FILE *ptrfile=fopen("text.txt", "r");
    char buffer[1000];
    int line;
    struct player players[16];
    line = 0;
    if(ptrfile==NULL) return 0;
    while(fgets(buffer, sizeof(buffer), ptrfile) != NULL){
        if(strcmp(buffer, "") == 0) return 0;
        char *number=strtok(buffer, ",");
        char *player_name=strtok(NULL, ",");
        char *title_name=strtok(NULL, ",");
        players[line].number=atoi(number);
        strcpy(players[line].player_name, player_name);
        strcpy(players[line].title_name, title_name);;
        line++;
    }
    fclose(ptrfile);
    return 0
}

关于C - 将文本中的值存储到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13522916/

相关文章:

c - ||, && C 中的运算符

c - 打印表达式并对其求值的宏(使用 __STRING)

c# - 找到填充了多少位数字的数组?

linux - 在文件 linux 中查找匹配模式

c++ - 懒惰的 __FILE__ 和 __LINE__ 人口

php - 什么是 4 位八进制 Unix 文件权限系统?

c - 解释汇编代码

c - 如何在 asn1c 中使用封装的结构? (使用包含)

ios - 将json作为字符串保存到核心数据并使用字符串创建对象数组

javascript - 在javascript中如何引用this.form.checkbox[5].checked?