使用C ++

时间:2016-06-20 20:01:34

标签: c++ excel csv

我正在尝试使用CSV,据我所知,没有允许您插入列或行的开源库。相反,我正在尝试编写一个代码,通过获取每个单元格的值并将其复制到右侧的单元格来模拟它。为了做到这一点,我试图从右边开始向左移动,以免破坏从左到右移动的数据。

到目前为止,这是我的代码:

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

using namespace std;

int main()
{
    FILE * qFile;
    qFile = fopen ("Testcsv2.csv", "r+");
    int i, j, k;
    char input [80];
    printf("Variables declared\n");
    for(k=1;k<5;k++)
    {
        printf("k loop entered\n");
        for(i=5;i>1;i--)
        {
            printf("i loop entered\n");
            for(j=1;j<i;j++)
            {
                fscanf(qFile, "%2[^,]", input);
                printf("Input is %s\n", input);
            }
            fprintf(qFile, "%s", input);
        }
    }
    fclose (qFile);
    return 0; 
}

每次尝试此操作时,fscanf会反复读取A1而不是读取A1,然后读取B1,C1等。

如何让它逐个单元格地读取,然后向下移动一行并重新进行?

谢谢!

编辑:输入文件只是第一组4x4单元格,其数据对应于其单元格。

即。 A1 B1 C1 D1 A2 B2 C2 D2 A3 B3 C3 D3 A4 B4 C4 D4

每个都包含在它自己的单元格中。

1 个答案:

答案 0 :(得分:0)

我认为您不应该打印到输入文件:

    fprintf(qFile, "%s", input);

这可能是您的文件损坏的原因。

另外,你在哪里处理行尾?
通常,CSV文件的格式为每行文本一行。