【原創】C語言處理文件數據(4)spa
testtrain.txt數據文件總共1600行,取兩行進行數據展現,原數據格式:.net
176 0:3 1:3 2:5 3:1 5:1 7:1 10:1 11:1 12:24 13:13 14:8 15:9 17:4 19:27 21:1 28:12 32:1 36:14 44:14 48:15 49:95 50:1 51:24 52:19 53:5 54:7 55:5 57:49 58:24 59:11 61:12 62:2 64:5 65:2 66:11 67:6 71:1 72:9 73:23 74:10 75:25 76:22 77:25 78:23 79:8 80:3 81:7 82:7 83:2 84:23 85:28 86:65 87:10 88:3 89:7 90:6 91:7 92:5 93:9 94:13 95:29 96:1 97:3 98:15 99:4 100:5 101:9 102:6 104:24 105:3 106:13 107:7 108:2 109:9 110:21 111:1 114:6 115:4 116:1 121:13 123:11 124:16 125:15 126:3 129:7 130:3 131:5 132:31 133:9 134:5 135:5 136:13 139:1 140:4 141:7 142:7 143:4 144:8 145:64 146:12 147:6 148:3 149:38 150:35 151:2 152:3 153:6 154:11 155:1 156:26 157:16 158:12 159:9 163:5 164:10 169:1 170:1 171:12 172:16 173:24 174:10 175:7 176:14 177:8 178:1 179:2 180:15 181:33 182:29 183:15 185:21 186:1 187:55 188:11 189:9 190:64 191:3 194:4 195:42 196:3 197:16 198:16 201:2 202:9 203:28 204:56 206:12 207:28 208:12 209:14 210:7 211:11 212:16 216:6 217:13 218:3 219:10 220:20 221:2 222:15 223:19 224:22 225:12 226:3 227:4 228:12 229:33 230:9 232:5 233:16 234:4 235:1 236:50 237:11 238:3 239:37 183 0:2 1:10 2:19 5:1 9:2 12:15 13:7 28:3 36:10 38:11 42:3 43:6 44:1 45:26 46:11 48:21 49:7 50:14 51:6 52:67 53:2 54:4 57:2 58:2 59:13 60:8 61:61 63:6 64:3 65:1 66:1 71:1 72:2 73:8 75:5 76:33 77:40 78:13 79:2 80:4 81:1 82:10 84:13 85:13 86:32 87:5 88:3 89:12 90:5 91:1 92:1 93:9 94:2 95:43 96:8 97:1 98:15 99:7 100:4 101:19 102:9 103:3 104:9 105:16 106:63 107:22 108:27 109:13 110:21 111:2 112:4 113:5 115:1 116:1 118:4 120:2 121:4 122:1 123:2 124:12 125:49 126:7 127:6 128:6 129:2 130:1 131:2 132:9 133:2 134:6 135:8 137:20 138:2 140:3 141:7 142:9 143:13 144:3 145:8 146:27 147:7 148:3 149:2 152:8 153:7 154:28 155:37 156:4 157:1 158:4 159:5 160:2 162:1 163:1 164:3 165:8 166:2 167:2 169:2 170:1 171:5 172:32 173:50 174:3 175:20 176:6 177:6 178:2 180:3 181:55 182:14 183:32 184:69 185:144 186:4 187:25 188:18 189:7 190:112 191:57 192:2 194:6 195:3 196:1 197:1 199:4 200:6 201:2 202:22 203:6 204:4 205:1 207:7 208:1 209:3 210:17 211:1 212:3 214:4 215:3 216:9 217:3 218:2 219:25 220:15 221:9 222:16 223:34 224:12 225:6 226:2 227:8 228:2 229:16 230:2 231:5 232:6 233:48 234:2 235:4 236:36 238:11 239:74
原數據規律:每行的第一個數爲本行數據組的個數,如第一行,首個數字爲176,即表示第一行共有176組「%d:%d」的數據。code
要求:blog
處理後,testtrain_compare.txt部分數據格式以下:ip
0:3 1:3 2:5 3:1 4:0 5:1 6:0 7:1 8:0 9:0 10:1 11:1 12:24 13:13 14:8 15:9 16:0 17:4 18:0 19:27 20:0 21:1 22:0 23:0 24:0 25:0 26:0 27:0 28:12 29:0 30:0 31:0 32:1 33:0 34:0 35:0 36:14 37:0 38:0 39:0 40:0 41:0 42:0 43:0 44:14 45:0 46:0 47:0 48:15 49:95 50:1 51:24 52:19 53:5 54:7 55:5 56:0 57:49 58:24 59:11 60:0 61:12 62:2 63:0 64:5 65:2 66:11 67:6 68:0 69:0 70:0 71:1 72:9 73:23 74:10 75:25 76:22 77:25 78:23 79:8 80:3 81:7 82:7 83:2 84:23 85:28 86:65 87:10 88:3 89:7 90:6 91:7 92:5 93:9 94:13 95:29 96:1 97:3 98:15 99:4 100:5 101:9 102:6 103:0 104:24 105:3 106:13 107:7 108:2 109:9 110:21 111:1 112:0 113:0 114:6 115:4 116:1 117:0 118:0 119:0 120:0 121:13 122:0 123:11 124:16 125:15 126:3 127:0 128:0 129:7 130:3 131:5 132:31 133:9 134:5 135:5 136:13 137:0 138:0 139:1 140:4 141:7 142:7 143:4 144:8 145:64 146:12 147:6 148:3 149:38 150:35 151:2 152:3 153:6 154:11 155:1 156:26 157:16 158:12 159:9 160:0 161:0 162:0 163:5 164:10 165:0 166:0 167:0 168:0 169:1 170:1 171:12 172:16 173:24 174:10 175:7 176:14 177:8 178:1 179:2 180:15 181:33 182:29 183:15 184:0 185:21 186:1 187:55 188:11 189:9 190:64 191:3 192:0 193:0 194:4 195:42 196:3 197:16 198:16 199:0 200:0 201:2 202:9 203:28 204:56 205:0 206:12 207:28 208:12 209:14 210:7 211:11 212:16 213:0 214:0 215:0 216:6 217:13 218:3 219:10 220:20 221:2 222:15 223:19 224:22 225:12 226:3 227:4 228:12 229:33 230:9 231:0 232:5 233:16 234:4 235:1 236:50 237:11 238:3 239:37 0:2 1:10 2:19 3:0 4:0 5:1 6:0 7:0 8:0 9:2 10:0 11:0 12:15 13:7 14:0 15:0 16:0 17:0 18:0 19:0 20:0 21:0 22:0 23:0 24:0 25:0 26:0 27:0 28:3 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:10 37:0 38:11 39:0 40:0 41:0 42:3 43:6 44:1 45:26 46:11 47:0 48:21 49:7 50:14 51:6 52:67 53:2 54:4 55:0 56:0 57:2 58:2 59:13 60:8 61:61 62:0 63:6 64:3 65:1 66:1 67:0 68:0 69:0 70:0 71:1 72:2 73:8 74:0 75:5 76:33 77:40 78:13 79:2 80:4 81:1 82:10 83:0 84:13 85:13 86:32 87:5 88:3 89:12 90:5 91:1 92:1 93:9 94:2 95:43 96:8 97:1 98:15 99:7 100:4 101:19 102:9 103:3 104:9 105:16 106:63 107:22 108:27 109:13 110:21 111:2 112:4 113:5 114:0 115:1 116:1 117:0 118:4 119:0 120:2 121:4 122:1 123:2 124:12 125:49 126:7 127:6 128:6 129:2 130:1 131:2 132:9 133:2 134:6 135:8 136:0 137:20 138:2 139:0 140:3 141:7 142:9 143:13 144:3 145:8 146:27 147:7 148:3 149:2 150:0 151:0 152:8 153:7 154:28 155:37 156:4 157:1 158:4 159:5 160:2 161:0 162:1 163:1 164:3 165:8 166:2 167:2 168:0 169:2 170:1 171:5 172:32 173:50 174:3 175:20 176:6 177:6 178:2 179:0 180:3 181:55 182:14 183:32 184:69 185:144 186:4 187:25 188:18 189:7 190:112 191:57 192:2 193:0 194:6 195:3 196:1 197:1 198:0 199:4 200:6 201:2 202:22 203:6 204:4 205:1 206:0 207:7 208:1 209:3 210:17 211:1 212:3 213:0 214:4 215:3 216:9 217:3 218:2 219:25 220:15 221:9 222:16 223:34 224:12 225:6 226:2 227:8 228:2 229:16 230:2 231:5 232:6 233:48 234:2 235:4 236:36 237:0 238:11 239:74
處理後,testtrain_result.txt部分數據格式以下:get
3 3 5 1 0 1 0 1 0 0 1 1 24 13 8 9 0 4 0 27 0 1 0 0 0 0 0 0 12 0 0 0 1 0 0 0 14 0 0 0 0 0 0 0 14 0 0 0 15 95 1 24 19 5 7 5 0 49 24 11 0 12 2 0 5 2 11 6 0 0 0 1 9 23 10 25 22 25 23 8 3 7 7 2 23 28 65 10 3 7 6 7 5 9 13 29 1 3 15 4 5 9 6 0 24 3 13 7 2 9 21 1 0 0 6 4 1 0 0 0 0 13 0 11 16 15 3 0 0 7 3 5 31 9 5 5 13 0 0 1 4 7 7 4 8 64 12 6 3 38 35 2 3 6 11 1 26 16 12 9 0 0 0 5 10 0 0 0 0 1 1 12 16 24 10 7 14 8 1 2 15 33 29 15 0 21 1 55 11 9 64 3 0 0 4 42 3 16 16 0 0 2 9 28 56 0 12 28 12 14 7 11 16 0 0 0 6 13 3 10 20 2 15 19 22 12 3 4 12 33 9 0 5 16 4 1 50 11 3 37 2 10 19 0 0 1 0 0 0 2 0 0 15 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 10 0 11 0 0 0 3 6 1 26 11 0 21 7 14 6 67 2 4 0 0 2 2 13 8 61 0 6 3 1 1 0 0 0 0 1 2 8 0 5 33 40 13 2 4 1 10 0 13 13 32 5 3 12 5 1 1 9 2 43 8 1 15 7 4 19 9 3 9 16 63 22 27 13 21 2 4 5 0 1 1 0 4 0 2 4 1 2 12 49 7 6 6 2 1 2 9 2 6 8 0 20 2 0 3 7 9 13 3 8 27 7 3 2 0 0 8 7 28 37 4 1 4 5 2 0 1 1 3 8 2 2 0 2 1 5 32 50 3 20 6 6 2 0 3 55 14 32 69 144 4 25 18 7 112 57 2 0 6 3 1 1 0 4 6 2 22 6 4 1 0 7 1 3 17 1 3 0 4 3 9 3 2 25 15 9 16 34 12 6 2 8 2 16 2 5 6 48 2 4 36 0 11 74
源代碼以下: it
/************************************************************************* > File Name: data_patch.c > Author: Geng > Mail: genglut@163.com > Created Time: Wed 05 Nov 2014 12:35:08 PM CST ************************************************************************/ #include<stdio.h> #include<stdlib.h> int main(void) { FILE *filesrc, *filedest_compare, *filedest_result; int word1, word2, word3; //用於從源文件中格式化讀取數據 //word1用於存放數據組「%d1:%d2」的%d1 //word2用於存放數據組「%d1:%d2」的%d2 //word3存放每行的首個數據,即每行數據組的個數 int i, j, zero, temp, tempswitch; i = 0;//用於和word3比較,判斷是否到了行末尾 j = 0;//用於和word1比較,判斷行中是否缺乏數據組 zero = 0;//用於補全缺乏的數據組,即「%d:0」 temp = 0; //temp用於判斷每行末尾數據組的word1少於239,由於每行處理後都應該有240個數據組 tempswitch = 0;//用於判斷是否該讀取原數據文件的首個數據 if((filesrc = fopen("testtrain.txt", "r")) == NULL)//原數據文件 { perror("fopen"); exit(EXIT_FAILURE); } if((filedest_compare = fopen("testtrain_compare.txt", "w")) == NULL)//處理後的第一個數據結果文件 { perror("fopen"); exit(EXIT_FAILURE); } if((filedest_result = fopen("testtrain_result.txt", "w")) == NULL)//處理後的最終數據結果文件 { perror("fopen"); exit(EXIT_FAILURE); } while(!feof(filesrc))//判斷是否到了文件末尾 { if(tempswitch == 0)//判斷是否該讀取原數據文件的首個數據 { fscanf(filesrc, "%d", &word3); //word3存放每行的首個數據,即每行數據組的個數 } tempswitch = 1;//已經讀取了行的首個數據 if(i == word3)//判斷是否讀完了一行 { if(word1 < 239)//判斷行末尾數據是否小於239 { temp = word1; while(temp < 239)//補全缺乏的數據組 { temp++; fprintf(filedest_result, "%d ", zero); //將補全的數據輸出到filedest_result fprintf(filedest_compare, "%d:%d ", temp, zero); //將補全的數據輸出到數據輸出到 } } i = 0;//置0,從新做爲讀取下一行數據的判斷條件 j = 0;//置0,從新做爲讀取下一行數據的判斷條件 fprintf(filedest_result, "%s", "\n"); //讀完一行,向filedest_result寫入換行符 fprintf(filedest_compare, "%s", "\n"); //讀完一行,向filedest_compare寫入換行符 tempswitch = 0;//置0,用於判斷讀下一行的首個數據 continue; //跳出本次循環,本次循環下面的代碼將再也不執行開始下次循環 } fscanf(filesrc, "%d:%d", &word1, &word2);// if(j < word1)//判斷是否缺乏數據組,若是缺乏,則補全缺乏的數據組 { while(j < word1) { fprintf(filedest_result, "%d ", zero); fprintf(filedest_compare, "%d:%d ", j, zero); j++; } } fprintf(filedest_result, "%d ", word2); //向filedest_result寫入數據 fprintf(filedest_compare, "%d:%d ", word1, word2); //向filedest_compare寫入數據 i++;//開始下一個 j++;//開始下一個 } return 0; }
原文連接:http://blog.csdn.net/geng823/article/details/40857487io
版權聲明:本文爲博主原創文章,未經博主容許不得轉載。class