2015-10-18 48 views
0

我有一個100個隨機數字,一次一行的文本文件。我有一個數組讀取每一行並將每個數字存儲到數組的每個元素中。數組大小最初爲1000.我有一個maxSize被定義爲10.此maxSize作爲內存大小。錯誤檢查,尋找一些指導

所以,當maxSize是10時,我只能將10個數字從文本文件放入數組中。如果它大於最大值,我需要打印出來(太大)。

換句話說,當文本文件嘗試存儲超過maxSize的更多數字時,我需要輸出printf(「too big」)等錯誤消息;

如果我有少於10個數字的文本文件,沒有問題。

我不太確定如何解決在我的程序中的這個錯誤檢查我想通過比較數組中的所有數字到最大。但是我在計算算法時遇到了一些麻煩。

錯誤檢查是我最後的功能,代碼有錯不知道如何最大範圍比較陣列

#include <stdio.h> 
#include <stdlib.h> 

#define SIZE 1000 /*Array size*/ 
#define INIT_MEMO 50505 /*Toke*/ 
#define END -999999 /*End of file*/ 
#define TOO_BIG -10 
#define INVALID_WORD -20 

void init_memo(int a[]); 
void dump (int accumulaotr, int instcounter, int instregister, int operationcode, int operand); 
void dump_memo(int a[], int max); 
int load(); 
int error_message(int [], int); 

int main(void) { 
int memory[SIZE]; 

int opCode = 00;   
int op = 000;   
int instreg = 00000; 
int instctr = 000; 
int acc = 000000; 
int ints = 0;  

int maxmemo = 0;  
int *mem;   
int on = 0; 

init_memo(memory); dump(acc, instctr, instreg, opCode, op); 
printf("ValidInstruction\t%d\n", ++ints); 

dump(acc, instctr, instreg, opCode, op); 
printf("ValidInstructions\t%d\n", ++ints); 
dump_memo(memory, 10); 
error_message(memory, 10); 
return EXIT_SUCCESS 
} 

void init_memo(int a[]) { 
int i; 

for(i = 0; i < SIZE-1; i++){ /*Initialize all array values to 50505*/ 
    a[i] = INIT_MEMO; 
} 
} 

void dump (int accumulaotr, int instcounter, int instregister, int     operationcode, int operand) { 
printf("\n"); 
printf("REGISTERS:\n"); 
printf("accumulator\t\t%+05d\n", accumulaotr); 
printf("instructioncounter\t%03d\n", instcounter); 
printf("instructionregister\t%+05d\n", instregister); 
printf("operationcode\t\t%02d\n", operationcode); 
printf("operand\t\t\t%03d\n", operand); 
} 


void dump_memo(int a[], int max) { 
int i; 
int count = 0; 

load(a); 

printf("\n"); 
printf("\n"); 
printf("MEMORY:\n"); 
printf("\n"); 
printf(" %d ", count); 
for(i = 0; i <= 9; i++) { 
     printf("%+d ", a[i]); 
} 

count +=10; 
printf("\n %d ", count); 
for(i = 10; i < max; i++) { 
     printf("%+d ", a[i]); 
} 
printf("\n"); 

} 


int load(int mem[]) { 
int num; 
int i = 0; 
char c; 
while (fscanf(stdin, "%d%c", &num, &c) == 2) {  
    if (num != END) { 
     mem[i] = num; 
    } 
    i++;   
} 
return 0; 
} 

int error_message(int a[], int max) { 
int size = 0; 
size = sizeof(a)/sizeof(a[0]); 
printf("%d\n", size); 

return 0; 
} 
+2

發佈代碼到目前爲止 – amdixon

+0

「換句話說,當文本文件試圖存儲...」OOP在它是最好的?大多數文本文件不能存儲自己的東西。請顯示該文件的代碼。 – Olaf

+0

也許是一個聰明的文件;) – amdixon

回答

0

參考C.大衛蘭的評論之上。既然你已經有一個計數器i,行

 mem[i] = num; 
當然,你必須通過 maxload()功能

前插入。