繁体   English   中英

如何从file.csv读取并将每个值保存在数组C的字符串中

[英]How to read from a file.csv and save every value in a string of array C

我有一个包含 6.321.078 条记录的文件,它们由用逗号分隔的几个整数组成。 我的目标是逐行读取并将其保存在字符数组中(因此,字符串)。 我的问题是,当我运行sscanf()它不起作用。 我认为这是问题所在,但我不确定这是唯一的问题。 我知道该文件包含 INT,但我需要保存每一行,例如字符串。 我能做什么,为什么它不起作用? (下面是我的file.csv的示例)

主文件

int main() {
    FILE *fd;
    char *arr;
    arr = (char *)malloc(6321078);
    for (int k = 0; k < 6321078; k++) {
        arr[k] = calloc(20, sizeof(char));
    }
    char *r;
    int pos = 0;
    int n;
    fd = fopen("file.csv", "r");
    if (fd == NULL) {
       perror("Error");
       exit(1);
    }

    while (fgets(r, sizeof(r), fd) != NULL) {
        sscanf(r, "%s", arr[pos]);
        printf("%s", arr[pos]);
        pos++;
    }
}

file.csv 示例:

在此处输入图片说明

可以使用指向 20 个数组的指针char (*arr)[20]
然后为记录数分配内存。
使用fgets直接从文件读取到每条记录。
完成后,关闭文件并释放内存。

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

#define SIZE 6321078
#define LEN 20

int main ( void) {
    char (*arr)[LEN] = NULL;
    int pos = 0;
    FILE *fd = NULL;

    if ( NULL == ( fd = fopen("file.csv", "r"))) {
        perror("Error");
        exit ( EXIT_FAILURE);
    }

    if ( NULL == ( arr = calloc ( SIZE, sizeof *arr))) {
        fclose ( fd);
        fprintf ( stderr, "calloc problem\n");
        exit ( EXIT_FAILURE);
    }

    while ( pos < SIZE && fgets ( arr[pos], sizeof arr[pos], fd)) {
        printf ( "%s", arr[pos]);
        ++pos;
    }

    fclose ( fd);
    free ( arr);

    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM