2023年12月2日发(作者:)

C语言读取csv文件的两种方法C语言读取csv文件的两种方法打开csv文件FILE* fp = NULL;fp = fopen("D:CerebellumSaverand_", "at+");if (fp != NULL) printf("打开文件成功!!n");else printf("失败!!n");方法一:一次获取所有字符,用strtok函数分割(字符少的情况下使用)char* line,* p;//字符指针char buffer[60],s[60];//存储所有字符const char* delim = ",";int k = 0; //一次获取所有字符,用strtok进行分割fseek(fp, 0L, SEEK_SET);line = fgets(buffer,60,fp);//先获取所有strcpy(s, line);//字符指针转给字符常量,否则不能用strtokprintf("s=%sn", s);p = strtok(s, delim);while (p != NULL && k < 10) {//以10个数为例 a[k] = atof(p);//字符型转换为浮点型 printf("a[%d]=%fn",k, a[k]); p = strtok(NULL, delim); k++;}方法二:每次取逗号前的一个数,用strstr函数查找逗号位置后一位继续查找字符(字符多的情况下使用)char* line,* ptr;//字符指针char buffer[10];char* p;int N;N=10;//以10个数为例p = 0L;//设置初始查找位置for (int k = 0; k < N; k++) { fseek(fp, p, 0); line = fgets(buffer,10,fp); if (line != NULL) { ptr = strstr(buffer, ",");//返回第一次出现逗号的指针 if(ptr != NULL) { *ptr = '0';//将逗号赋为结束符 a[k] = atof(buffer); p = p + strlen(buffer) + 1;//前一次查找位置+输出的字符数+1=下一次查找的起点 } else//ptr为NULL时,输出最后一个 a[k] = atof(buffer); } else

break;}注意两种方法前都要加头文件#include