c语言中没有直接读取excel的库,所以需要先将excel转成csv格式的文件
使用FLIE类去定义一个FILE结构体类型的指针file
FILE* file =fopen("文件目录","r");
//其中fopen函数第一个参数是文件目录,第二个是读取模式
r - open for reading
w - open for writing (file need not exist) 如果文件不存在,就创建一个新的。
a - open for appending (file need not exist)
r+ - open for reading and writing, start at beginning
w+ - open for reading and writing (overwrite file)
a+ - open for reading and writing (append if file exists)
//需要加一个判断是否打开文件
if (file == NULL) {
perror("Error opening file");
return -1;
}
//perror函数用来将上一个函数发生错误的原因输出到标准设备(stderr)
我这里采用一行一行读取
char line[1024];
int isFirstLine = 1;
//fgets函数原型 char *fgets (char *str, int n, FILE *stream);
//第一个是指向一个字符数组的指针,该数组存储了要读取的字符串
//n 是要读取的最大字符数(包括最后的空字符)
//stream是要读取的文件
//功能:从指定的流 stream 读取一行,并把它存储在str所指向的字符串内
while(fgets(line, sizeof(line), file))
{
//去除excel第一行标题行
if (isFirstLine)
{
isFirstLine = 0;
continue;
}
int i = 0;
line[strcspn(line, "\n")] = 0;
// 使用strtok依次读取第一列、第二列和第三列数据
char* token1 = strtok(line, ",");
char* token2 = strtok(NULL, ",");
char* token3 = strtok(NULL, ",");
//atoi函数用来将char转换为int
int id = atoi(token1);
int distance = atoi(token2);
int angle = atoi(token3);
if (token1 != NULL && token2 != NULL && token3 != NULL) {
printf("%d,%d,%d",id,distance,angle);
}
}
最后我们需要将文件关闭
fclose(file);