一、從C語言讀取CSV文件例題
CSV,即逗號分隔符文件,是一種常用於存儲和交換數據的文件格式。CSV文件的每一行都是一條數據記錄,每個欄位使用逗號進行分隔。下面是一個簡單的CSV文件示例:
"Name","Age","Gender"
"John",25,"Male"
"Alice",30,"Female"
"Bob",20,"Male"
下面是從C語言讀取CSV文件的代碼示例:
//打開文件
FILE* fp = fopen("data.csv", "r");
if (fp == NULL) {
printf("無法打開文件\n");
return 1;
}
//讀取文件
char line[1024];
while (fgets(line, 1024, fp)) {
//分割行數據
char* tok;
for (tok = strtok(line, ","); tok && *tok; tok = strtok(NULL, ",\n")) {
printf("%s ", tok);
}
printf("\n");
}
//關閉文件
fclose(fp);
上述代碼首先使用標準C庫函數fopen打開了CSV文件,然後使用fgets逐行讀取文件內容。在每一行讀取完成後,使用strtok函數分割行數據,然後將每個欄位列印出來。
二、讀取CSV文件的某一列數據
在實際應用中,有時只需要讀取CSV文件中的某一列數據。下面是讀取CSV文件中某一列數據的代碼示例:
//打開文件
FILE* fp = fopen("data.csv", "r");
if (fp == NULL) {
printf("無法打開文件\n");
return 1;
}
//讀取文件
char line[1024];
while (fgets(line, 1024, fp)) {
//分割行數據
char* tok;
int col = 0;
for (tok = strtok(line, ","); tok && *tok; tok = strtok(NULL, ",\n")) {
if (col == 1) { //讀取第二列數據
printf("%s\n", tok);
break;
}
col++;
}
}
//關閉文件
fclose(fp);
上述代碼在讀取每一行數據時,使用計數器col記錄當前讀取的欄位數量,當讀取到第二列數據時,將其列印出來。
三、CSV文件數據讀取
CSV文件可能包含各種各樣的數據,因此在讀取CSV文件時需要進行數據類型的轉換。下面是一個讀取CSV文件數據的代碼示例:
//打開文件
FILE* fp = fopen("data.csv", "r");
if (fp == NULL) {
printf("無法打開文件\n");
return 1;
}
//讀取文件
char line[1024];
while (fgets(line, 1024, fp)) {
//分割行數據
char* tok;
int col = 0;
char name[32];
int age;
char gender[8];
for (tok = strtok(line, ","); tok && *tok; tok = strtok(NULL, ",\n")) {
switch (col) {
case 0:
strcpy(name, tok);
break;
case 1:
age = atoi(tok);
break;
case 2:
strcpy(gender, tok);
break;
default:
break;
}
col++;
}
//處理數據
//...
}
//關閉文件
fclose(fp);
上述代碼使用switch語句將CSV文件中的字元串數據轉換為int或char類型數據。
四、C讀取文件存入數組
在讀取CSV文件時,通常需要將讀取到的數據存儲在數組中,方便後續處理。下面是將CSV文件中的數據存儲在數組中的代碼示例:
//打開文件
FILE* fp = fopen("data.csv", "r");
if (fp == NULL) {
printf("無法打開文件\n");
return 1;
}
//定義數組
#define MAX_ROWS 100
#define MAX_COLS 4
char data[MAX_ROWS][MAX_COLS][32];
int row = 0;
//讀取文件
char line[1024];
while (fgets(line, 1024, fp)) {
//分割行數據
char* tok;
int col = 0;
for (tok = strtok(line, ","); tok && *tok; tok = strtok(NULL, ",\n")) {
strcpy(data[row][col], tok);
col++;
}
row++;
}
//關閉文件
fclose(fp);
上述代碼定義了一個3維字元數組data,使用二重循環將CSV文件中的數據存儲在數組中。
五、讀取CSV文件中的數據用什麼包
讀取CSV文件時,有很多第三方包可以使用,從而簡化開發過程。下面是幾個常用的C語言讀取CSV文件的包:
- libcsv:基於C語言的CSV文件解析器,可快速讀取並解析CSV文件。
- OpenCSV:Java語言的CSV文件解析器,支持從各種數據源中讀取CSV文件。
- CSVeed:基於Java語言的CSV文件解析器,提供了豐富的CSV解析選項。
六、C讀取HEX文件存入數組
與CSV文件類似,HEX文件也是一種經常使用的文件格式。HEX文件是一種用於編程器件中的機器語言代碼的格式,即程序可以通過HEX文件格式被燒錄到晶元中。下面是將HEX文件存儲在數組中的代碼示例:
//打開文件
FILE* fp = fopen("data.hex", "r");
if (fp == NULL) {
printf("無法打開文件\n");
return 1;
}
//定義數組
#define MAX_ROWS 100
#define MAX_COLS 16
unsigned char data[MAX_ROWS][MAX_COLS];
int row = 0;
//讀取文件
char line[1024];
while (fgets(line, 1024, fp)) {
//解析HEX文件格式
//...
memcpy(data[row], hex_data, sizeof(hex_data));
row++;
}
//關閉文件
fclose(fp);
上述代碼將讀取到的HEX文件數據存儲在一個二維unsigned char數組中,方便後續處理。
七、C#讀取CSV文件
在.NET Framework中,可以使用StreamReader類讀取CSV文件。下面是一個讀取CSV文件的代碼示例:
using System.IO;
//打開文件
StreamReader sr = new StreamReader("data.csv");
if (sr == null) {
Console.WriteLine("無法打開文件");
return;
}
//讀取文件
while (!sr.EndOfStream) {
string line = sr.ReadLine();
string[] fields = line.Split(',');
foreach (string field in fields) {
Console.Write(field + " ");
}
Console.WriteLine();
}
//關閉文件
sr.Close();
上述代碼將打開一個CSV文件,使用Split方法分割行數據,並將數據列印到控制台中。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/155167.html