加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

c语言怎样读入文本文档(文档有题头、下面的内容有文字和数字)

(2015-04-25 10:44:07)
标签:

c语言

txt

文档

txt文档

读入

分类: C语言控制台程序

想读入类似下面的数据,计算并重新输出。

 

 

 C++ Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//下面是要读入的文档。
层号  岩层名称    体积模量    岩层厚度    弹性模量
32  砂质泥岩    2.31E+10    5   3.60E+10
31  03煤 1.17E+11    1   1.40E+10
30  粉砂岩 1.13E+10    2.5 2.10E+10
29  2#煤 1.25E+11    4   1.50E+10
28  粉砂岩 1.02E+10    6   1.90E+10
27  粗粒砂岩    1.99E+10    6.5 3.70E+10
26  粉砂岩 1.02E+10    3   1.90E+10
25  巨砾岩 1.98E+10    4   3.80E+10
24  泥岩  1.79E+10    2.5 2.80E+10
23  中粒砂岩    2.04E+10    4   3.80E+10
22  砂质泥岩    2.31E+10    2.5 3.60E+10
21  6#煤 7.69E+09    1   1.20E+10
20  粉砂岩 1.08E+10    3.5 2.00E+10
19  泥岩  2.05E+10    1.5 3.20E+10
18  粉砂岩 1.02E+10    12  1.90E+10
17  石灰岩 1.45E+10    1.5 2.70E+10
16  7#煤 1.00E+11    1   1.20E+10
15  粉砂岩 1.02E+10    2   1.90E+10
14  泥岩  1.54E+10    2   2.40E+10
13  石灰岩 1.40E+10    2.5 2.60E+10
12  粉砂岩 1.02E+10    2   1.90E+10
11  中粒砂岩    2.04E+10    5   3.80E+10
10  粉砂岩 1.02E+10    3   1.90E+10
9   石灰岩 1.45E+10    3.5 2.70E+10
8   8#煤 8.33E+10    5   1.00E+10
7   粉砂岩 1.58E+11    1   1.90E+10
6   细粒砂岩    2.10E+10    2   3.90E+10
5   中粒砂岩    2.04E+10    6.5 3.80E+10
4   粗粒砂岩    1.99E+10    1   3.70E+10
3   粉砂岩 1.02E+10    2.5 1.90E+10
2   9#煤层    1.00E+11    1   1.20E+10
1   细粒砂岩    2.10E+10    6.5 3.90E+10

 

下面是具体代码:

 C++ Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
;c语言读入规律文本文档并计算并输出就是有一系列关于岩层的参数在Excel表中,

;但是读Excel表格难度较大,就想着拷贝到.txt中,然后就形成了这种每列间有table键的样子。

;我把这些数据读入结构体,然后从第二行开始赋值给数组,经过一系列计算,

;将结果再返回给结构体,再输出到.txt文档。

;所以想先弄好怎么把这样的数据读入再输出,也就是复制文档了。

#include 

#include 

#include 

#define   50

struct content

{

int id;

char layn[100];

double bu;

double h;

double e;

}b[N];

int main()

{

char id[9]="岩层层号";

char layn[9]="岩层名称";

char bu[9]="体积模量";

char h[9]="岩层厚度";

char e[9]="弹性模量";

int n;

FILE *fp;

char root[1000]="岩层参数.txt";

fp=fopen(root,
"r+");

if (fp==NULL)

{

printf(
"无法打开文件!\n");

return 1;

}



fscanf(fp,
"%s\t%s\t%s\t%s\t%s\n"id, layn, bu, h, e); //read title!!



FILE *fp1=fopen(
"复制岩层参数.txt","wb");

if fp1==NULL )

{

printf(
"无法打开文件!\n");

return 1;

}

fprintf(fp1,
"%s\t\t%s\t\t%s\t\t%s\t\t%s\r\n",id,layn,bu,h,e);



n=
0;

while!feof(fp) )

{

fscanf(fp,
"%d\t%s\t%lf\t%lf\t%lf\n",&b[n].id,b[n].layn,&b[n].bu,&b[n].h,&b[n].e); //double %lf



fprintf(fp1,
"%d\t%s\t\t%lf\t%lf\t%lf\r\n",b[n].id,b[n].layn,b[n].bu,b[n].h,b[n].e);

//   fprintf(stdout,"%d\t%s\t\t%lf\t%lf\t%lf\r\n",b[n].id,b[n].layn,b[n].bu,b[n].h,b[n].e);

++n;

}

fclose(fp);

fclose(fp1);

return 0;

}

参考:百度知道

 

应该这样注释:

 C++ Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
//;

//c语言读入规律文本文档并计算并输出就是有一系列关于岩层的参数在Excel表中,

//

//;

//但是读Excel表格难度较大,就想着拷贝到.txt中,然后就形成了这种每列间有table键的样子。

//

//;

//我把这些数据读入结构体,然后从第二行开始赋值给数组,经过一系列计算,

//

//;

//将结果再返回给结构体,再输出到.txt文档。

//

//;

//所以想先弄好怎么把这样的数据读入再输出,也就是复制文档了。



#include <stdio.h>



#include <stdlib.h>



#include <string.h>



#define   50



struct content



{



    
int id;



    
char layn[100];



    
double bu;



    
double h;



    
double e;



b[N];



int main()



{



    
char id[9"岩层层号";



    
char layn[9"岩层名称";



    
char bu[9"体积模量";



    
char h[9"岩层厚度";



    
char e[9"弹性模量";



    
int n;



    FILE *fp;



    
char root[1000"岩层参数.txt";



    fp fopen(root, 
"r+");



    
if (fp == NULL)



    {



        printf(
"无法打开文件!\n");



        
return 1;



    }







    fscanf(fp, 
"%s\t%s\t%s\t%s\t%s\n"id, layn, bu, h, e); //read title!!







    FILE *fp1 fopen(
"复制岩层参数.txt""wb");



    
if fp1 == NULL )



    {



        printf(
"无法打开文件!\n");



        
return 1;



    }



    fprintf(fp1, 
"%s\t\t%s\t\t%s\t\t%s\t\t%s\r\n"id, layn, bu, h, e);







    
0;



    
while!feof(fp) )



    {



        fscanf(fp, 
"%d\t%s\t%lf\t%lf\t%lf\n"&b[n].id, b[n].layn, &b[n].bu, &b[n].h, &b[n].e); //double %lf







        fprintf(fp1, 
"%d\t%s\t\t%lf\t%lf\t%lf\r\n"b[n].id, b[n].layn, b[n].bu, b[n].h, b[n].e);



        
//   fprintf(stdout,"%d\t%s\t\t%lf\t%lf\t%lf\r\n",b[n].id,b[n].layn,b[n].bu,b[n].h,b[n].e);



        ++n;



    }



    fclose(fp);



    fclose(fp1);



    
return 0;



}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有