【原創】C語言處理文件數據(4) 分類: Linux --- C 2014-11-06 11:15 87人閱讀 評論(0) 收藏

 

【原創】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和testtrain_result.txt中所示的數據格式文件。
  • 對於testtrain_compare.txt,去掉原數據testtrain.txt中的首個數據,如去掉第一行的176,去掉第二行的183。而後要求處理後的testtrain_compare.txt中每行的「%d:%d」的組數爲240個,即從「0:%d」到「239:%d」。對於每行缺乏的「%d:%d」,補上「%d:0」.如原數據testtrain.txt第一行沒有「4:%d」,則補上「4:0」,其餘的以此類推。即獲得testtrain_compare.txt。
  • 對於testtrain_result.txt,在testtrain_compare.txt的基礎上,只取每組數據「%d1:%d2」得的%d2,把「%d1:」去掉,即獲得testtrain_result.txt。
  • (其實最終要獲得的數據文件爲testtrain_result.txt,testtrain_compare.txt只是思考過程出現的一箇中間步驟,這裏把testtrain_compare.txt拿出來只是讓同窗更好理解一些。)

處理後,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

相關文章
相關標籤/搜索