91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 11.3MB
    文件類型: .zip
    金幣: 1
    下載: 0 次
    發布日期: 2023-07-29
  • 語言: C/C++
  • 標簽: c++??

資源簡介

本文檔程序給出VS2013如何讀取csv文件的詳細代碼,通過動態分配數組實現

資源截圖

代碼片段和文件信息

#include?“stdafx.h“
#include?“readcsv.h“

#include?
#include?
#include?
#include?
using?namespace?std;

float*?giCsvData;???????????//動態分配數據內存的指針?????
int?giNumData;????????????//讀取的數據字節數
int?giNumRow;?????????????//每行的字節數
int?giNumCol;?????????????//?每列的字節數
//計算csv文件中的總行數
int?GetTotalLineCount(FILE?*?fp)
{
int?i?=?0;
char?strLine[MAX_LINE_SIZE];
fseek(fp?0?SEEK_SET);
while?(fgets(strLine?MAX_LINE_SIZE?fp))
i++;
fseek(fp?0?SEEK_SET);
return?i;
}
//計算csv文件中的總列數(以第一行的列數為基準)
int?GetTotalColCount(FILE?*?fp)
{
int?i?=?0;
string?number;
char?strLine[MAX_LINE_SIZE];
fseek(fp?0?SEEK_SET);
if?(fgets(strLine?MAX_LINE_SIZE?fp))
{
istringstream?is(strLine);
while(std::getline(is?number?‘‘))
{
i++;
}
//i=strlen(strLine)/2;???//因為csv文件以逗號‘‘作為分隔符,所以此處除以2
}
else
{
fseek(fp?0?SEEK_SET);
return?-1;
}
fseek(fp?0?SEEK_SET);
return?i;
}
//?通過指針*giCsvData給數據動態分配內存空間
int?AssignSpaceForData(int?inumdata){
giCsvData?=?NULL;
giCsvData?=?(float*)malloc(sizeof(float)*inumdata);????///修改
if?(giCsvData?==?NULL)
return?0;
memset(giCsvData?0?sizeof(float)*inumdata);
return?1;
}

//?釋放動態數據內存
void?FreeCsvData(){
free(giCsvData);
giCsvData?=?NULL;
}

//?從csv文件中讀取數據
float?ReadCsvData(char*?csvFilePath)????????//??/int?
{
FILE*?fCsv;
char?*ptr;
char?strLine[MAX_LINE_SIZE];
int?i;
int?j;
//?已經有了數據,則先刪除
if?(giCsvData?!=?NULL)
FreeCsvData();
//?打開文件
if?(fopen_s(&fCsv?csvFilePath?“r“)?!=?0)
{
printf(“open?file?%s?failed“?csvFilePath);
return?-1;
}
else
{
//?確定動態數組的大小,然后開辟空間
?giNumRow?=?GetTotalLineCount(fCsv);
?giNumCol?=?GetTotalColCount(fCsv);
?giNumData?=?giNumRow*giNumCol;
AssignSpaceForData(giNumData);

//?讀取數據
for?(i?=?0;?i? {

j?=?0;
if?(fgets(strLine?MAX_LINE_SIZE?fCsv))
{
ptr?=?strtok(strLine?““);??//返回字符數組中字符‘’之前的字符,剩下的保留到靜態數組中(此方法vs認為不安全)
//可以嘗試使用strtok_s替換
while?(ptr?!=?NULL)
{
giCsvData[i*giNumCol?+?j]?=?atof(ptr);?????//將字符轉換為int類型數據并保存到動態數組中?//atoi(ptr);?
j++;
ptr?=?strtok(NULL?““);????????????????//將從文件中讀取的當前行剩余字符數組,讀取字符‘’前面的字節
}
}
}
//?關閉文件
fclose(fCsv);
}
return?1;
}

//通過控制臺顯示讀取的csv數據
void??ShowCsvData(float?ddata[][3])
{
for?(int?i?=?0;?i? {
printf(“Line?%d?:“?i?+?1);????//輸出每行的行號?Line?:
for?(int?j?=?0;?j {
//printf(“%.3f??“giCsvData[i*giNumCol+j]);??//?打印CSV數據
ddata[i][j]?=?giCsvData[i*giNumCol?+?j];
}
printf(“\n“);???????????????????????????//輸出換行
}
FreeCsvData();
//return?ddata;
}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-06-16?18:29??ReadCSVFile\
?????目錄???????????0??2017-06-16?11:41??ReadCSVFile\Debug\
?????文件???????33280??2017-06-16?11:34??ReadCSVFile\Debug\ReadCSVFile.exe
?????目錄???????????0??2017-06-16?17:41??ReadCSVFile\ReadCSVFile\
?????目錄???????????0??2017-06-16?11:41??ReadCSVFile\ReadCSVFile\Debug\
?????文件?????????937??2017-06-16?11:41??ReadCSVFile\ReadCSVFile\Debug\ReadCSVFile.Build.CppClean.log
?????文件??????????50??2016-04-08?19:55??ReadCSVFile\ReadCSVFile\Debug\ReadCSVFile.lastbuildstate
?????文件????????2738??2017-06-16?11:41??ReadCSVFile\ReadCSVFile\Debug\ReadCSVFile.log
?????目錄???????????0??2017-06-16?11:41??ReadCSVFile\ReadCSVFile\Debug\ReadCSVFile.tlog\
?????文件????????3508??2017-06-16?11:41??ReadCSVFile\ReadCSVFile\Debug\ReadCSVFile.tlog\CL.read.1.tlog
?????文件????????1412??2017-06-16?11:41??ReadCSVFile\ReadCSVFile\Debug\ReadCSVFile.tlog\CL.write.1.tlog
?????文件?????????176??2017-06-16?11:41??ReadCSVFile\ReadCSVFile\Debug\ReadCSVFile.tlog\ReadCSVFile.lastbuildstate
?????文件????????1342??2017-06-16?11:41??ReadCSVFile\ReadCSVFile\Debug\ReadCSVFile.tlog\cl.command.1.tlog
?????文件???????????2??2017-06-16?11:41??ReadCSVFile\ReadCSVFile\Debug\ReadCSVFile.tlog\link.command.1.tlog
?????文件???????????2??2017-06-16?11:41??ReadCSVFile\ReadCSVFile\Debug\ReadCSVFile.tlog\link.read.1.tlog
?????文件???????????2??2017-06-16?11:41??ReadCSVFile\ReadCSVFile\Debug\ReadCSVFile.tlog\link.write.1.tlog
?????文件???????????0??2017-06-16?11:41??ReadCSVFile\ReadCSVFile\Debug\ReadCSVFile.tlog\unsuccessfulbuild
?????文件????????4670??2017-06-16?11:41??ReadCSVFile\ReadCSVFile\Debug\main.obj
?????文件???????12630??2017-06-16?11:41??ReadCSVFile\ReadCSVFile\Debug\readCSVFile.obj
?????文件???????44032??2017-06-16?11:41??ReadCSVFile\ReadCSVFile\Debug\vc120.idb
?????文件???????77824??2017-06-16?11:41??ReadCSVFile\ReadCSVFile\Debug\vc120.pdb
?????文件????????7280??2017-06-16?17:15??ReadCSVFile\ReadCSVFile\ReadCSVFile.vcxproj
?????文件????????1157??2017-06-16?17:15??ReadCSVFile\ReadCSVFile\ReadCSVFile.vcxproj.filters
?????文件?????????143??2016-04-08?19:16??ReadCSVFile\ReadCSVFile\ReadCSVFile.vcxproj.user
?????文件??????314029??2016-04-07?20:58??ReadCSVFile\ReadCSVFile\Test.csv
?????文件?????????612??2017-06-16?17:21??ReadCSVFile\ReadCSVFile\main.c
?????文件????????2679??2017-06-16?17:41??ReadCSVFile\ReadCSVFile\readCSVFile.c
?????文件?????????963??2017-06-16?16:52??ReadCSVFile\ReadCSVFile\readCSVFile.h
?????目錄???????????0??2017-06-16?11:42??ReadCSVFile\ReadCSVFile\x64\
?????目錄???????????0??2017-06-16?16:55??ReadCSVFile\ReadCSVFile\x64\Debug\
?????文件?????????574??2017-06-16?16:55??ReadCSVFile\ReadCSVFile\x64\Debug\ReadCSVFile.Build.CppClean.log
............此處省略29個文件信息

評論

共有 條評論