#include <stdio.h> #define F_PATH "d:\myfile\file.txt" int main(void) { FILE *fp = NULL; //需要注意 fp = fopen(F_PATH, "a"); if(NULL == fp) { return -1; //返回錯誤代碼 }
CString a = "a";
CString b = "b";
CString c = "c";
fprintf(fp, "%s,%s,%s\n", a, b, c); //寫入a,b,c到文件中
fclose(fp); fp = NULL; //需要指向空,否則會指向原打開文件地址 return 0; }
上面是用C語言寫內容到文件中去,下面是從文件中讀取:
#include <stdio.h> int main(void) { FILE *fp = NULL; char line[1000]; if((fp = fopen("test.csv","at+")) != NULL) { char delims[] = ","; char *result = NULL; CString a,b; while (fgets(line, MAX_LINE, fp)) { result = strtok( line, delims ); a = result; result = strtok( NULL, delims ); b = result; } fclose(fp); fp = NULL; } }
下面記錄下C語言處理CSV文件的方法:
什么是CSV文件
CSV是 Comma-separated values (逗號分隔值)的首字母縮寫,它通常是以逗號且不僅限於逗號分隔各個值,我們都叫他CSV。看下面的例子:
China, Shanghai, Pudong, Zhang San, 200000, 1234567
BMW; GER; 300000; RMB; i530
從上面兩個例子可以看出,可以用不同的分隔符來分隔數據;數據的類型可以不同;長度任意。
由多行這樣的CSV組成的文件叫做CSV文件(逗號分隔值文件)。當然,他們必須用同樣的分隔符,對應每一列的數據要有相同的含義,不然這個文件就是無意義的。CSV文件可以直接用Microsoft Office中的Excel打開,這里不討論Windows下的操作。
C語言編程處理CSV文件
通常CSV文件中包含大量有用信息,而且有時數據量龐大,一個數據文件會達到1G的大小,一般都是日志等重要信息。對CSV文件的處理也有很多方法,常見的就是用Bash, Python, Perl 等腳本語言來處理。這里提供一種用C語言處理CSV文件的方法。以下過程都是在Linux環境下進行的,Windows用戶請注意移植。
C語言標准庫中有一個字符串(string.h)函數 strtok ,它的原型是
char *strtok( char *s, const char *ct );
它以 ct 中的字符為分界符,將字符串 s 分成許多記號。第一次調用時,它搜索 s ,找到不包含ct的第一個記號,將 s 中的下一個字符替換為 ‘/0’ ,並返回指向記號的指針。隨后調用 strtok 函數時(由 s 的值是否為NULL指示),返回下一個不包含 ct 中字符的記號。當 s 中沒有這樣的記號時,返回NULL 。每次調用時的 ct 可以不同。
注意紅色標記的部分,這個函數的使用方法是(假設以逗號為分隔符):
char str[] = “Life is like, a box of chocolate, you never, know what you’re, gonna get”;
char delims[] = “,”;
char *result = NULL;
result = strtok( str, delims );
while( result != NULL ) {
printf( “%s /n”, result );
result = strtok( NULL, delims );
}
OUTPUT:
life is like
a box of chocolate
you never
know what you’re
gonna get
部分資料來源:http://blog.sina.com.cn/s/blog_4936c31d010104w7.html