从csv中添加字符到char数组。

时间:2015-10-27 11:00:19

标签: c

我正在尝试获取csv文件并将其中的字符串分配给csv。我尝试了几件运气很少的东西。这就是我到目前为止所做的:

int main(int argc, char* argv []) {
    FILE *file = fopen( argv[1], "r" );
    int x;
    char strings[50];
    while  ((x = fgetc(file)) != EOF) {
        printf( "%c", x);
    }
    fclose(file);

    return 0;
}

我已经创建了字符串char数组,但我不确定如何将csv的内容分配到其中。有什么想法吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

您可以使用fgets直接读入数组strings -

char strings[255];                                    //give size accordingly
while(fgets(strings,sizeof strings,file)!=NULL) {     //iteratre until fgets return NULL 
    printf("%s", strings);                            //print string that is read from file
}

注意 -

1.您尚未检查argc以及return的{​​{1}}的值。你应该检查它们。

答案 1 :(得分:0)

您可以使用您的逐字阅读方法。在你去的时候填充你的临时缓冲区,但要注意不要溢出它。遇到分隔符时 - 列的逗号,行的换行符 - 处理当前缓冲区。

重置缓冲区,调整当前行和列并重复,直到找到文件末尾。如果要存储单元格的内容,请务必进行复制,因为临时缓冲区将被覆盖。

这是一个只打印数据的简单示例:

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

int main(void)
{
    FILE *file = fopen("example.csv", "r");
    // check for errors

    char buf[50];
    int nbuf = 0;

    int row = 0;
    int col = 0;

    for (;;) {
        int c = fgetc(file);

        if (c == EOF) break;

        if (c == '\n' || c == ',') {
            buf[nbuf] = '\0';
            printf("[%d][%d] '%s'\n", row, col, buf);
            nbuf = 0;

            if (c == ',') {
                col++;
            } else {
                col = 0;
                row++;
            }      
        } else {
            if (nbuf + 1 < sizeof(buf)) buf[nbuf++] = c;
        }        
    }

    fclose(file);

    return 0;
}