如何用C⼀C++把csv中的内容读到一个数组里?

2024-11-01 20:18:14
推荐回答(5个)
回答1:

1、逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。


2、CSV文件文件是普通文本文件,直接使用文本文件控制参数“r”通过fopen函数即可打开。例如:

int a[1000],b[1000],i;
char s[1000][100];
FILE *fp;                 /*定义一个文件指针*/ 
fp=fopen("分数表.csv", "r");   /*打开文件csv文件*/ 
while(fscanf(fp,"%d,%d,%s",a+i,b+i,s[i])!=EOF){  /*利用逗号间隔,读取文本数据到一个数组里*/ 
    /*处理读取的文本信息*/
}
fclose(fp);               /*关闭打开的文件*/

回答2:

你用记事本打开csv文件,如果数之间是用逗号隔开的,用程序一。
如果数之间是用空格隔开的,用程序二。

程序一。
#include
#define hang 1000
#define lie 9
main()
{
int i,j;
FILE *fid;
int a[hang][lie];
char str[256],str2,str3;
fid=fopen("A.csv","r");
for(i=0; i fscanf(fid,"%256[^,]",&str);printf("%s\n",str);
for(j=0; j fscanf(fid,",%d",&a[i][j]);
printf("%d\n",a[i][j]);}}
for(i=0; i for(j=0; j printf("%d ",a[i][j]);}
printf("\n");}
}

程序2:
#include
#define hang 1000
#define lie 9
main()
{
int i,j;
FILE *fid;
int a[hang][lie];
char str[256],str2,str3;
fid=fopen("A.csv","r");
for(i=0; i fscanf(fid,"%256[^ ]",&str);printf("%s\n",str);
for(j=0; j fscanf(fid," %d",&a[i][j]);
printf("%d\n",a[i][j]);}}
for(i=0; i for(j=0; j printf("%d ",a[i][j]);}
printf("\n");}
}

回答3:

// vc 6.0可能需要使用的头文件
// #include "stdafx.h"
#include
#include
#include

// csv需要读取数据的文件名,可自行更改
#define FILENAME "csv"

using namespace std;

void main()
{
int a[1000][9];
int i, j;
string str = "junk";

ifstream in(FILENAME);

if (!in)
{
cerr << "Can not open the file." << endl;
return;
}

for (i = 0; i < 1000; ++i)
{
in >> str;

for (j = 0; j < 9; ++j)
{
in >> a[i][j];
cout << a[i][j] << ' ';
}

cout << endl;
}

in.close();
}

回答4:

#include

int main()
{
int line, a[1000][9];
for (line=0; line < 1000; ++line)
{
scanf("%*s %d %d %d %d %d %d %d %d %d", a[line], a[line]+1, a[line]+2, a[line]+3, a[line]+4, a[line]+5, a[line]+6, a[line]+7, a[line]+8, a[line]+9);
}
}

回答5:

来搞笑呢?