C语言读取csv文件

  c语言读取csv表格数据 

    工作生活中我们时常把数据存储在exel表格中,如要对数据进行处理我们就需要将数据读取出来,接下来将介绍一个简单的读取csv文件格式的c语言代码。

     这是一份简单的csv文件,存储着学生成绩信息接下来我们以实例为参考,读取该csv中学生的姓名和学生成绩。

C语言读取csv文件_第1张图片

       我们需要的信息是从第二行开始的,所以我们需要掠过第一行从第二行开始读取数据,这时候需要用到一个函数fseek,fseek函数是定义在stdio.h里的一个函数。fseek(FILE *stream, long offset, int fromwhere);此处fseek

传入的参数为需要读取的文件,偏移量,从何处开始。


起始点 对应的数字 代表的文件位置
SEEK_SET 0 文件开头
SEEK_CUR 1 文件当前位置
SEEK_END 2 文件末尾 

CSV是 Comma-separated values (逗号分隔值)的首字母缩写,它通常是以逗号且不仅限于逗号分隔各个
值, 我们都叫他CSV。例如上面的csv表格用notepad打开后里面实际是长这样的,数据与数据之间用,隔开。
C语言读取csv文件_第2张图片
       知道以上知识我们就可以对csv文件进行操作:
FILE *fp = NULL;
	char *line,*record;
	char buffer[1024];
	if ((fp = fopen("Student.csv", "at+")) != NULL)
	{
		fseek(fp, 170L, SEEK_SET);  //定位到第二行,每个英文字符大小为1
		char delims[] = ",";
		char *result = NULL;
		int j = 0;
		while ((line = fgets(buffer, sizeof(buffer), fp))!=NULL)//当没有读取到文件末尾时循环继续
		{
			record = strtok(line, ",");
			while (record != NULL)//读取每一行的数据
			{
				if (strcmp(record, "Ps:") == 0)//当读取到Ps那一行时,不再继续读取
					return 0;
				printf("%s ", record);//将读取到的每一个数据打印出来
				if (j == 10)  //只需读取前9列
					break;
				record = strtok(NULL, ",");
				j++;
			}
			printf("\n");
			j = 0;

		}
		fclose(fp);
		fp = NULL;
	}
程序运行成功,控制台顺利打印出来了我们所需要的数据。如果想要将数据存储在数组中只要在代码相应的位
值代码,当然不要忘记csv读取出来的数据 都是字符串格式的,我们需要对其进行格式的转换

C语言读取csv文件_第3张图片

你可能感兴趣的:(c/c++基础操作)