-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
c++讀取csv(c讀取csv文件)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于c++讀取csv的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
ChatGPT國內(nèi)免費(fèi)在線使用,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com
本文目錄:
一、用c語言讀取csv文件中的一列數(shù)據(jù)并求這些數(shù)據(jù)的平均值
#include <stdio.h>
void main()
{
int i,n=0;
float x[1000],val;
FILE *fp;
if((fp=fopen("test.csv","rt"))==NULL)
{
printf("cannot open file\n");
return;
}
while (1)
{
if(fscanf(fp,"%f,", &val) == EOF) break;
x[n]=val;
n++;
}
fclose(fp);
val=0;
for(i=0;i<n;i++)
val+=x[i];
if(n>0) val=val/n;
printf("%g\n",val);
}
二、vs2010 c程序讀取csv文件
csv是按逗號分隔的
如果確定有且只有兩列
那么循環(huán)用
fscanf(fp, "%f,%f", &a[i], &b[i]);
即可
其中fp為打開的文件指針 a b是你的目標(biāo)數(shù)組
i為讀入的下標(biāo)
判斷fscanf返回值 或者讀后判斷feof可以確定終止條件
三、c# 讀取csv文件 內(nèi)容含逗號
#region 讀Csv,靜態(tài)方法/// <summary>
/// 靜態(tài)方法,讀取規(guī)則的2維表的Csv成DataSet
/// </summary>
/// <param name="fileFullPath">全路徑,包括文件名</param>
/// <returns>DataSet</returns>
public static DataTable Csv2DataSet(string fileFullPath)
{
int intColCount = 0;
bool blnFlag = true;
DataTable mydt = new DataTable("myTableName");
DataColumn mydc;
DataRow mydr;
string strpath = fileFullPath; //cvs文件路徑
string strline;
string[] aryline;
System.IO.StreamReader mysr = new System.IO.StreamReader(strpath, Encoding.Default);
while ((strline = mysr.ReadLine()) != null)
{
List<string> ss = new List<string>();
aryline = strline.Split(new char[] { ',' });
if (strline.IndexOf(""") > -1)
{
for (int i = 0; i < aryline.Length; i++)
{
if (aryline[i].Contains("""))
{
ss.Add(aryline[i] + "," + aryline[++i]);
if (i == aryline.Length - 1)
{
break;
}
}
else
{
ss.Add(aryline[i]);
}
}
}
else
{
ss.AddRange(aryline);
}
if (blnFlag)
{
blnFlag = false;
intColCount = ss.Count;
for (int i = 0; i < intColCount; i++)
{
mydc = new DataColumn(ss[i]);
mydt.Columns.Add(mydc);
}
}
mydr = mydt.NewRow();
for (int i = 0; i < intColCount; i++)
{
mydr[i] = ss[i];
}
mydt.Rows.Add(mydr);
}
return mydt;
}
#endregion
四、C語言 fgets函數(shù)讀取CSV文件如何從第二行開始,第一行是表頭。
第一次獲取的數(shù)據(jù)不要就可以了,何必這么麻煩。
函數(shù)原型:
char *fgets(char *buf, int bufsize, FILE *stream);
參數(shù):
*buf: 字符型指針,指向用來存儲所得數(shù)據(jù)的地址。
bufsize: 整型數(shù)據(jù),指明存儲數(shù)據(jù)的大小。
*stream: 文件結(jié)構(gòu)體指針,將要讀取的文件流。
返回值:
成功,則返回第一個(gè)參數(shù)buf;
在讀字符時(shí)遇到end-of-file,則eof指示器被設(shè)置,如果還沒讀入任何字符就遇到這種情況,則buf保持原來的內(nèi)容,返回NULL;
如果發(fā)生讀入錯(cuò)誤,error指示器被設(shè)置,返回NULL,buf的值可能被改變。
例子:
#include<string.h>#include<stdio.h>
int main ( void )
{
FILE*stream;
char string[]="Thisisatest";
char msg[20];
/*openafileforupdate*/
stream=fopen("DUMMY.FIL","w+");
/*writeastringintothefile*/
fwrite(string,strlen(string),1,stream);
/*seektothestartofthefile*/
fseek(stream,0,SEEK_SET);
/*readastringfromthefile*/
fgets(msg,strlen(string)+1,stream);
/*displaythestring*/
printf("%s",msg);
fclose(stream);
return 0;
}
以上就是關(guān)于c++讀取csv相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
ChatGPT中文版VSCode插件(vscodec++插件)
沈師景觀設(shè)計(jì)實(shí)習(xí)(沈陽景觀設(shè)計(jì)師)
江蘇蘇州景觀設(shè)計(jì)快題(蘇大2020景觀快題)