我正在尝试使用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
每个都包含在它自己的单元格中。
答案 0 :(得分:0)
我认为您不应该打印到输入文件:
fprintf(qFile, "%s", input);
这可能是您的文件损坏的原因。
另外,你在哪里处理行尾?
通常,CSV文件的格式为每行文本一行。