ubuntu 用C语言的libxls接口处理.xls文件时出现段错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu 用C语言的libxls接口处理.xls文件时出现段错误相关的知识,希望对你有一定的参考价值。

ubuntu13.10的系统,刚刚下载安装了libxls 1.4.0接口,就写了一个简单的程序实验一下,
源代码:
#include<stdio.h>#include<xls.h>int main(int argc,char **argv) FILE *fout; xlsWorkBook *pWb; xlsWorkSheet *pWs; struct st_row_data *row; int i,j; if((fout=fopen("1.txt","w"))==NULL) fprintf(stderr,"Error: open file failed!\n"); return -1; ; if((pWb=xls_open("2.xls","UTF-8"))==NULL) fprintf(stderr,"Error: open workbook error!\n"); return -1; ; if((pWs=xls_getWorkSheet(pWb,0))==NULL) fprintf(stderr,"Error: open worksheet error!\n"); return -1; ; xls_parseWorkSheet(pWs); for(i=0;i<8;i++) row=&pWs->rows.row[i]; for(j=0;j<7;j++) fprintf(fout,"%s\t",row->cells.cell[j].str); fputc('\n',fout); xls_close_WS(pWs); xls_close_WB(pWb); fclose(fout); return 0;
运行提示段错误,用gdb调试:

把断点定在fopen前:

这样看好像是fopen有问题,但是写一个只有fopen和fclose的程序测试没问题。
把断点定在fclose前:

和刚才提示不一样。。
如果断点定在第一行一直next单步执行又可以一直运行没有错误。
我晕了,不知道哪里出了问题,求大神帮助~~~
50分,解决问题再追加,谢谢了!

参考技术A fopen的打开方式有问题,w+才是在没有的时候创建,只有w当文件不存在时打不开。追问

不是吧,w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

参考技术B 读写excel文件不能用fopen和fclose函数

以上是关于ubuntu 用C语言的libxls接口处理.xls文件时出现段错误的主要内容,如果未能解决你的问题,请参考以下文章

Linux 读取 (*.xls)文件读取,使用libxls库

对xlslib库与libxls库的简易封装

Windows 上 C++ 中的 libxl 库设置

打印机出现 pcl xl error 提示

IBM XL/C 是不是在预处理器中表示 Altivec 支持?

c语言图像处理