C++读取CSV文件,并将逗号分隔符文件分割成N个数组
2012-11-10 23:18
609 查看
#include <stdio.h>
#include <string.h>
// #include <windows.h>
#define MAXLINE 256
struct student
{
char stuName[100];//姓名
char f[11][10];
};
//自定义数据类型
typedef struct student RECORD;
//结构体数组
RECORD rs[10000] = {0};
void spit(int max);
//读取文件
int main()
{
int length,i,j,k;//每行数据长度\结构体下标\成员变量个数\循环变量
char cLineStr[255],cData[80],cTmp[2];//每行文件内容\从文件读取的成员变量内容\每行数据单个字符的值
FILE* fp;
//初始化变量
j = 0 ;
i = 0 ;
memset(cData, 0, sizeof(cData));
memset(cLineStr, 0, sizeof(cLineStr));
memset(&rs, 0, sizeof(RECORD));
fflush(stdin);
//读取文件
fp = fopen("D:\\Exat.csv","r");
if (fp == NULL)
{
return -1;
}
//从文件中一行一行读取数据放入结构体数组
while ((!feof(fp))&&((fgets(cLineStr,MAXLINE,fp)) != NULL))
{
length = strlen(cLineStr);
for (k = 0; k < length; k++)
{
memset(cTmp, 0, sizeof(cTmp));
memcpy(cTmp, &cLineStr[k],1);
//在文件中各个成员中间是用逗号分开的
if (cTmp[0] != '\n')
{
strcat(cData,cTmp);
}
//将从文件中读取出的成员变量内容放入数据文件记录结构体数组中相应的位置
else
{
if (j == 0)
{
strcpy(rs[i].stuName,cData);
}
memset(cData, 0, sizeof(cData));
j++;
if(j == 1)
{
break;
}
}
}//end for
j = 0;
i++;
}//end while
fclose(fp);
//返回数据文件记录结构体数组最大下标
i--;
spit(i);
return i;
}
void spit(int max)
{
int len ;
int m=0,n=0;
int num=0;
for(num=0;num<=max;num++)
{
len = strlen(rs[num].stuName);
for(int i = 0; i<len ;i++)
{
if(rs[num].stuName[i]!=',')
{
rs[num].f[m]
= rs[num].stuName[i];
n++;
}
else
{
m++;
n=0;
}
}
m=0;
n=0;
}
}
#include <string.h>
// #include <windows.h>
#define MAXLINE 256
struct student
{
char stuName[100];//姓名
char f[11][10];
};
//自定义数据类型
typedef struct student RECORD;
//结构体数组
RECORD rs[10000] = {0};
void spit(int max);
//读取文件
int main()
{
int length,i,j,k;//每行数据长度\结构体下标\成员变量个数\循环变量
char cLineStr[255],cData[80],cTmp[2];//每行文件内容\从文件读取的成员变量内容\每行数据单个字符的值
FILE* fp;
//初始化变量
j = 0 ;
i = 0 ;
memset(cData, 0, sizeof(cData));
memset(cLineStr, 0, sizeof(cLineStr));
memset(&rs, 0, sizeof(RECORD));
fflush(stdin);
//读取文件
fp = fopen("D:\\Exat.csv","r");
if (fp == NULL)
{
return -1;
}
//从文件中一行一行读取数据放入结构体数组
while ((!feof(fp))&&((fgets(cLineStr,MAXLINE,fp)) != NULL))
{
length = strlen(cLineStr);
for (k = 0; k < length; k++)
{
memset(cTmp, 0, sizeof(cTmp));
memcpy(cTmp, &cLineStr[k],1);
//在文件中各个成员中间是用逗号分开的
if (cTmp[0] != '\n')
{
strcat(cData,cTmp);
}
//将从文件中读取出的成员变量内容放入数据文件记录结构体数组中相应的位置
else
{
if (j == 0)
{
strcpy(rs[i].stuName,cData);
}
memset(cData, 0, sizeof(cData));
j++;
if(j == 1)
{
break;
}
}
}//end for
j = 0;
i++;
}//end while
fclose(fp);
//返回数据文件记录结构体数组最大下标
i--;
spit(i);
return i;
}
void spit(int max)
{
int len ;
int m=0,n=0;
int num=0;
for(num=0;num<=max;num++)
{
len = strlen(rs[num].stuName);
for(int i = 0; i<len ;i++)
{
if(rs[num].stuName[i]!=',')
{
rs[num].f[m]
= rs[num].stuName[i];
n++;
}
else
{
m++;
n=0;
}
}
m=0;
n=0;
}
}
相关文章推荐
- java读取csv文件内容(逗号分隔、回车换行文本)
- CSV(逗号分隔)、文本文件(制表符分隔) 等文件的读取
- 从CSV文件中读取数据,使用逗号','分割问题
- 从CSV文件中读取数据,使用逗号','分割问题
- 从CSV文件中读取数据,使用逗号','分割问题
- [Unity][JSON][csv][JSONUnity]csv-JSON如何在CSV文件中保存数组并读取JSON数组
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- C++文件读写操作(四)读取文件数据到临时数组
- 读取读写C++文件读写操作(四)读取文件数据到临时数组
- c++ 读取txt文件,split分割字符串
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- Python将数组(矩阵)存成csv文件,将csv文件读取为数组(矩阵)
- C/C++读写csv文件(用getline探测逗号分隔符)
- gnuplot 读取逗号分隔的数据文件
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- c++ 读取csv文件
- C#获取CSV文件内容对逗号和引号分隔的处理
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- C++文件读取与字符分割
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组