C语言链表和文件操作
这里说下p是一个结构指针变量而first也是一个结构指针变量。first指针是链表的头结点。为什么我这样做不能从Excel导出信息来。另外我能把链表的结点数据存入Exce...
这里说下 p是一个结构指针变量 而first也是一个结构指针变量。 first指针是链表的头结点。为什么我这样做不能从Excel导出信息来。另外我能把链表的结点数据存入Excel中 但就是导不出来,试了好多种方法都不行 求大神解决
展开
1个回答
展开全部
扩展名为xls的文件是office的excel文件,这是一种二进制文件。(当然不排除是一种挂羊头卖狗肉的文本文件,这种情况不考虑。)
你说你能写进去,貌似看你用了fprintf写文件吧,没错,但是fprintf是写文本文件的,按一定格式写的文本。你用\t作分隔输出的文件类似逗号分隔的csv文件,是可以被Excel识别并打开的,没错。
但是,fread是读取二进制文件的函数,如果文件中是纯文本,你用fread去读当然是错的,如果文件中是二进制,你用fread也不可能读成你想要的结构体。如果你的xls文件是Excel的原生二进制文件,那就更不可能是你用fread能读出来的,得用专门的库,如微软官方的office com库。
不知你明不明白二进制文件和文本文件的区别.
当然如果你读的那个xls文件就是你用fprintf写进去的文件,请用fscanf函数按照写时候的格式去读才行。自己看看fscanf函数,跟scanf类似。
更多追问追答
追问
嗯 大佬 你说的都对 但我把fread换成fsanf也还是读不出来 会不会是 我那样用链表遍历读取不行 格式错误啊
追答
你读的xls文件是哪来的,是你自己用fprintf写的?还是说是用excel保存出来的?如果是Excel保存来的,那你放弃吧,那是二进制文件,你不知道人家内部的数据二进制序列化规则,靠fread这种裸api是读不到想要的数据的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询