📄 ch31.htm
字号:
32 padTo80(buffer);<BR>
33 } /* End of encoding function */<BR>
34<BR>
35 /*:<BR>
36 ** Generated by Perl script -- Avoid editing<BR>
37 */<BR>
38 void encode_H0010_type(STRPTR buffer,P286_H0010_PTR sp)
<BR>
39 {<BR>
40 STRPTR ncp;<BR>
41<BR>
42 STRPTR cp;<BR>
43 register int i;<BR>
44 char tempbuffer[80];<BR>
45<BR>
46<BR>
47 /* Encode:int,numPatterns,6,7,2, */<BR>
48 sprintf(tempbuffer,"%d2",(sp->numPatterns));
<BR>
49 tempbuffer[2]= 0;<BR>
50 strncat((STRPTR )(&buffer[5]),tempbuffer,2);<BR>
51<BR>
52 /* Encode:int,sblInUse,8,8,1, */<BR>
53 sp->sblInUse %= 10;<BR>
54 tempbuffer[7] = (char)('0' + sp->sblInUse);<BR>
55 tempbuffer[8] = 0;<BR>
56 strncat((STRPTR )(&buffer[7]),tempbuffer,1);<BR>
57<BR>
58 /* Encode:int,sattInUse,9,9,1, */<BR>
59 sp->sattInUse %= 10;<BR>
60 tempbuffer[8] = (char)('0' + sp->sattInUse);<BR>
61 tempbuffer[9] = 0;<BR>
62 strncat((STRPTR )(&buffer[8]),tempbuffer,1);<BR>
63<BR>
64 /* Encode:int,numVessels,10,10,1, */<BR>
65 sp->numVessels %= 10;<BR>
66 tempbuffer[9] = (char)('0' + sp->numVessels);<BR>
67 tempbuffer[10] = 0;<BR>
68 strncat((STRPTR )(&buffer[9]),tempbuffer,1);<BR>
69<BR>
70 /* Encode:int,numDatum,11,11,1, */<BR>
71 sp->numDatum %= 10;<BR>
72 tempbuffer[10] = (char)('0' + sp->numDatum);<BR>
73 tempbuffer[11] = 0;<BR>
74 strncat((STRPTR )(&buffer[10]),tempbuffer,1);<BR>
75<BR>
76 /* Encode:int,offsetMode,12,12,1, */<BR>
77 sp->offsetMode %= 10;<BR>
78 tempbuffer[11] = (char)('0' + sp->offsetMode);<BR>
79 tempbuffer[12] = 0;<BR>
80 strncat((STRPTR )(&buffer[11]),tempbuffer,1);<BR>
81 padTo80(buffer);<BR>
82 } /* End of encoding function */<BR>
83<BR>
84 /*:<BR>
85 ** Generated by Perl script -- Avoid editing<BR>
86 */<BR>
87 void encode_H011_type(STRPTR buffer,P286_H011_PTR sp)
<BR>
88 {<BR>
89 STRPTR ncp;<BR>
90<BR>
91 STRPTR cp;<BR>
92 register int i;<BR>
93 char tempbuffer[80];<BR>
94<BR>
95<BR>
96 /* Encode:int,datumId,5,5,1, */<BR>
97 sp->datumId %= 10;<BR>
98 tempbuffer[4] = (char)('0' + sp->datumId);<BR>
99 tempbuffer[5] = 0;<BR>
100 strncat((STRPTR )(&buffer[4]),tempbuffer,1);<BR>
101<BR>
102 /* Encode:char,spheroidName,6,23,18, */<BR>
103 cp = (STRPTR )&(buffer[5]);<BR>
104 for (i=0; i< 18;i++)<BR>
105 buffer[5 + i] = sp->spheroidName[i];
<BR>
106<BR>
107 /* Encode:char,datumName,24,41,18, */<BR>
108 cp = (STRPTR )&(buffer[23]);<BR>
109 for (i=0; i< 18;i++)<BR>
110 buffer[23 + i] = sp->datumName[i];
<BR>
111<BR>
112 /* Encode:double,semimajorAxis,42,53,12,12.3 */<BR>
113 sprintf(tempbuffer,"%12.3f",(sp->semimajorAxis));
<BR>
114 tempbuffer[12]= 0;<BR>
115 strncat((STRPTR )(&buffer[41]),tempbuffer,12);<BR>
116<BR>
117 /* Encode:double,conversionFactor,66,77,12,12.8 */<BR>
118 sprintf(tempbuffer,"%12.8f",(sp->conversionFactor));
<BR>
119 tempbuffer[12]= 0;<BR>
120 strncat((STRPTR )(&buffer[65]),tempbuffer,12);<BR>
121<BR>
122 /* Encode:double,inverseFlattening,66,77,12,12.7 */<BR>
123 sprintf(tempbuffer,"%12.7f",(sp->inverseFlattening));
<BR>
124 tempbuffer[12]= 0;<BR>
125 strncat((STRPTR )(&buffer[65]),tempbuffer,12);<BR>
126 padTo80(buffer);<BR>
127 } /* End of encoding function */<BR>
128<BR>
129 /*:<BR>
130 ** Generated by Perl script -- Avoid editing<BR>
131 */<BR>
132 void encode_E3100_type(STRPTR buffer,P286_E3100_PTR sp)<BR>
133 {<BR>
134 STRPTR ncp;<BR>
135<BR>
136 STRPTR cp;<BR>
137 register int i;<BR>
138 char tempbuffer[80];<BR>
139<BR>
140<BR>
141 /* Encode:double,velprop,6,12,7,7.2 */<BR>
142 sprintf(tempbuffer,"%7.2f",(sp->velprop));<BR>
143 tempbuffer[7]= 0;<BR>
144 strncat((STRPTR )(&buffer[5]),tempbuffer,7);<BR>
145<BR>
146 /* Encode:int,srcNdx[0],13,16,4, */<BR>
147 sprintf(tempbuffer,"%d4",(sp->srcNdx[0]));<BR>
148 tempbuffer[4]= 0;<BR>
149 strncat((STRPTR )(&buffer[12]),tempbuffer,4);<BR>
150<BR>
151 /* Encode:int,srcNdx[1],26,29,4, */<BR>
152 sprintf(tempbuffer,"%d4",(sp->srcNdx[1]));<BR>
153 tempbuffer[4]= 0;<BR>
154 strncat((STRPTR )(&buffer[25]),tempbuffer,4);<BR>
155<BR>
156 /* Encode:int,srcNdx[2],39,42,4, */<BR>
157 sprintf(tempbuffer,"%d4",(sp->srcNdx[2]));<BR>
158 tempbuffer[4]= 0;<BR>
159 strncat((STRPTR )(&buffer[38]),tempbuffer,4);<BR>
160<BR>
161 /* Encode:int,srcNdx[3],52,55,4, */<BR>
162 sprintf(tempbuffer,"%d4",(sp->srcNdx[3]));<BR>
163 tempbuffer[4]= 0;<BR>
164 strncat((STRPTR )(&buffer[51]),tempbuffer,4);<BR>
165<BR>
166 /* Encode:int,srcNdx[4],65,68,4, */<BR>
167 sprintf(tempbuffer,"%d4",(sp->srcNdx[4]));<BR>
168 tempbuffer[4]= 0;<BR>
169 strncat((STRPTR )(&buffer[64]),tempbuffer,4);<BR>
170<BR>
171 /* Encode:int,dstNdx[0],13,16,4, */<BR>
172 sprintf(tempbuffer,"%d4",(sp->dstNdx[0]));<BR>
173 tempbuffer[4]= 0;<BR>
174 strncat((STRPTR )(&buffer[12]),tempbuffer,4);<BR>
175<BR>
176 /* Encode:int,dstNdx[1],26,29,4, */<BR>
177 sprintf(tempbuffer,"%d4",(sp->dstNdx[1]));<BR>
178 tempbuffer[4]= 0;<BR>
179 strncat((STRPTR )(&buffer[25]),tempbuffer,4);<BR>
180<BR>
181 /* Encode:int,dstNdx[2],39,42,4, */<BR>
182 sprintf(tempbuffer,"%d4",(sp->dstNdx[2]));<BR>
183 tempbuffer[4]= 0;<BR>
184 strncat((STRPTR )(&buffer[38]),tempbuffer,4);<BR>
185<BR>
186 /* Encode:int,dstNdx[3],52,55,4, */<BR>
187 sprintf(tempbuffer,"%d4",(sp->dstNdx[3]));<BR>
188 tempbuffer[4]= 0;<BR>
189 strncat((STRPTR )(&buffer[51]),tempbuffer,4);<BR>
190<BR>
191 /* Encode:int,dstNdx[4],65,68,4, */<BR>
192 sprintf(tempbuffer,"%d4",(sp->dstNdx[4]));<BR>
193 tempbuffer[4]= 0;<BR>
194 strncat((STRPTR )(&buffer[64]),tempbuffer,4);<BR>
195<BR>
196 /* Encode:double,slant[0],13,20,8,7.2 */<BR>
197 sprintf(tempbuffer,"%7.2f",(sp->slant[0]));<BR>
198 tempbuffer[8]= 0;<BR>
199 strncat((STRPTR )(&buffer[12]),tempbuffer,8);<BR>
200<BR>
201 /* Encode:double,slant[1],26,33,8,7.2 */<BR>
202 sprintf(tempbuffer,"%7.2f",(sp->slant[1]));<BR>
203 tempbuffer[8]= 0;<BR>
204 strncat((STRPTR )(&buffer[25]),tempbuffer,8);<BR>
205<BR>
206 /* Encode:double,slant[2],39,46,8,7.2 */<BR>
207 sprintf(tempbuffer,"%7.2f",(sp->slant[2]));<BR>
208 tempbuffer[8]= 0;<BR>
209 strncat((STRPTR )(&buffer[38]),tempbuffer,8);<BR>
210<BR>
211 /* Encode:double,slant[3],52,59,8,7.2 */<BR>
212 sprintf(tempbuffer,"%7.2f",(sp->slant[3]));<BR>
213 tempbuffer[8]= 0;<BR>
214 strncat((STRPTR )(&buffer[51]),tempbuffer,8);<BR>
215<BR>
216 /* Encode:double,slant[4],65,72,8,7.2 */<BR>
217 sprintf(tempbuffer,"%7.2f",(sp->slant[4]));<BR>
218 tempbuffer[8]= 0;<BR>
219 strncat((STRPTR )(&buffer[64]),tempbuffer,8);<BR>
220 padTo80(buffer);<BR>
221 } /* End of encoding function */</FONT></TT>
</BLOCKQUOTE>
<HR>
<HR>
<BLOCKQUOTE>
<B>Listing 31.4. The decoder file </B><TT><B><FONT FACE="Courier">P286dec.c</FONT></B></TT><B>.
<BR>
</B>
</BLOCKQUOTE>
<BLOCKQUOTE>
<TT><FONT FACE="Courier"> 1 /**<BR>
2 * C source file to decode records.<BR>
3 Don't edit this file<BR>
4 */<BR>
5 #include "p286.h"<BR>
6<BR>
7 /* The outgoing buffer must be 81 chars! */<BR>
8 extern void padTo80(STRPTR buffer);<BR>
9<BR>
10<BR>
11 /* The outgoing buffer must also be 81 chars! */<BR>
12 void substr(STRPTR buffer,STRPTR cut,int offset, int
len)<BR>
13 {<BR>
14 int i,j;<BR>
15 j = offset;<BR>
16 for(i=len;i<80;i++) cut[i] = buffer[j];<BR>
17 cut[len] = 0; /* NULL terminate the string*/
<BR>
18 } /* end of padding function */<BR>
19<BR>
20<BR>
21 /*:<BR>
22 ** Generated by Perl script -- Avoid editing<BR>
23 ** The outgoing buffer must also be 81 chars!<BR>
24 */<BR>
25 void decode_H0001_type(P286_H0001_PTR sp,STRPTR buffer)
<BR>
26 {<BR>
27 STRPTR cp;<BR>
28 register int i;<BR>
29 char tempbuffer[80];<BR>
30<BR>
31<BR>
32 strncpy(sp->SurveyType,(STRPTR )(&buffer[28]),52);
<BR>
33 sp->SurveyType[52]= 0;<BR>
34 } /* End of decoding function */<BR>
35<BR>
36 /*:<BR>
37 ** Generated by Perl script -- Avoid editing<BR>
38 ** The outgoing buffer must also be 81 chars!<BR>
39 */<BR>
40 void decode_H0010_type(P286_H0010_PTR sp,STRPTR buffer)
<BR>
41 {<BR>
42 STRPTR cp;<BR>
43 register int i;<BR>
44 char tempbuffer[80];<BR>
45<BR>
46<BR>
47 strncpy(tempbuffer,(STRPTR )(&buffer[5]),2);<BR>
48 tempbuffer[2]= 0;<BR>
49 sscanf(tempbuffer,"%2d",&(sp->numPatterns));
<BR>
50<BR>
51 strncpy(tempbuffer,(STRPTR )(&buffer[7]),1);<BR>
52 tempbuffer[1]= 0;<BR>
53 sscanf(tempbuffer,"%1d",&(sp->sblInUse));
<BR>
54<BR>
55 strncpy(tempbuffer,(STRPTR )(&buffer[8]),1);<BR>
56 tempbuffer[1]= 0;<BR>
57 sscanf(tempbuffer,"%1d",&(sp->sattInUse));
<BR>
58<BR>
59 strncpy(tempbuffer,(STRPTR )(&buffer[9]),1);<BR>
60 tempbuffer[1]= 0;<BR>
61 sscanf(tempbuffer,"%1d",&(sp->numVessels));
<BR>
62<BR>
63 strncpy(tempbuffer,(STRPTR )(&buffer[10]),1);<BR>
64 tempbuffer[1]= 0;<BR>
65 sscanf(tempbuffer,"%1d"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -