#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(int argc,char *argv[])
{
FILE *fp;
int flag=0;
int list_line=0,list_row=0;
int i=0,j=0;
int line_title[50];
char c;
double row_title[10];
double list_data[50][10];
if((fp=fopen("E:\\Study\\","r"))==NULL)//C语言中文件路径索引是双斜杠
{
printf("Can't open that file!");
exit(1);
}
// 通过对每个字符的判断来达到 对几乎任何排列比较规整的txt表格书写格式的 数据读取
c语言写入txt文件// 最主要依靠的是fscanf对数据类型格式的 自动判断
while(!feof(fp))
{
fscanf(fp,"%c",&c); //若对文档全部进行字符输出,可观察到数据、空格、tab、以及回车 之间的相对位置
//有利于理解文件的数据流
if(c>=48&&c<=57)
{
if(!flag)
{
fseek(fp,-1,SEEK_CUR); //因为在读完一个字符c用于判断是否是ASCII中阿拉伯数字范围后
//文件指针已处于当前double数的第一位有效数字上,若在此位读取fp,
//则读不到此位(因为fp从下一个点开始读);所以用fseek回溯一个字符长度
//弥补之前的字符判断动作造成的fp移动
fscanf(fp,"%lf",&row_title[list_row]);
list_row++;
}
else
{
fseek(fp,-1,SEEK_CUR);
fscanf(fp,"%lf",&list_data[i][j]);
// printf("%lf ",list_data[i][j]);
j++;
}
}
if(c==10)
{
fscanf(fp,"%d",&line_title[list_line]);
list_line++;
i++;
j=0;
flag=1;
}
}
for(i=1;i<=list_line;i++)//从i=1开始
{ //都是细节问题,这是由上面的程序决定的
for(j=0;j<list_row;j++)//j=list_row-1结束
printf("%lf ",list_data[i][j]);
printf("\n");
}
system("pause");
return 0;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论