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

csv是形如这样的:abs402541228asd213452342...1000行,10列舍弃第1列字符串不要,读取剩余的到一个a[1000][9]的二维数组中,值取整... csv是形如这样的:
abs 4 0 2 5 4 1 2 2 8
asd 2 1 3 4 5 2 3 4 2
...
1000行,10列
舍弃第1列字符串不要,读取剩余的到一个a[1000][9]的二维数组中,值取整形,用C/C++怎么做啊?
帮我写个完整的直接可运行的程序(带宏和头文件的),谢谢啦
展开
 我来答
tattackor
推荐于2017-09-05 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:891万
展开全部

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);               /*关闭打开的文件*/
hiyds
推荐于2017-09-21 · TA获得超过859个赞
知道小有建树答主
回答量:495
采纳率:100%
帮助的人:366万
展开全部
你用记事本打开csv文件,如果数之间是用逗号隔开的,用程序一。
如果数之间是用空格隔开的,用程序二。

程序一。
#include <stdio.h>
#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<hang; i++){
fscanf(fid,"%256[^,]",&str);printf("%s\n",str);
for(j=0; j<lie; j++){
fscanf(fid,",%d",&a[i][j]);
printf("%d\n",a[i][j]);}}
for(i=0; i<hang; i++){
for(j=0; j<lie; j++){
printf("%d ",a[i][j]);}
printf("\n");}
}

程序2:
#include <stdio.h>
#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<hang; i++){
fscanf(fid,"%256[^ ]",&str);printf("%s\n",str);
for(j=0; j<lie; j++){
fscanf(fid," %d",&a[i][j]);
printf("%d\n",a[i][j]);}}
for(i=0; i<hang; i++){
for(j=0; j<lie; j++){
printf("%d ",a[i][j]);}
printf("\n");}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梦想窗外
2009-05-18 · TA获得超过1588个赞
知道大有可为答主
回答量:1180
采纳率:0%
帮助的人:1565万
展开全部
// vc 6.0可能需要使用的头文件
// #include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>

// 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();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vbtraz
2009-05-17 · TA获得超过5532个赞
知道大有可为答主
回答量:4152
采纳率:0%
帮助的人:4447万
展开全部
#include <stdio.h>

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);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
刘小英雄steven
2018-05-15
知道答主
回答量:3
采纳率:0%
帮助的人:2566
引用tattackor的回答:
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); /*关闭打开的文件*/
展开全部
来搞笑呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式