#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小时内删除。