错误检查,寻找一些指导

时间:2015-10-18 01:02:53

标签: c arrays

我有一个包含100个随机数的文本文件,一次1行。我有一个数组,它读取每一行并将每个数字存储到我的数组的每个元素中。数组大小最初为1000.我有一个定义为10的maxSize。此maxSize用作内存大小。

因此,当maxSize为10时,我只能将文本文件中的10个数字放入数组中。如果它大于最大值我需要打印出来(太大)。

换句话说,当文本文件试图存储超过maxSize的更多数字时,我需要打印出像printf这样的错误消息(“太大了”);

如果我的文本文件少于10个,则没有问题。

我不太确定如何解决这个错误检查我的程序我想通过比较数组中的所有数字到最大。但是我在计算算法时遇到了一些麻烦。

错误检查在我的上一个函数中,代码有错误,不确定如何将maxSize与数组进行比较

#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;
}

1 个答案:

答案 0 :(得分:0)

请参阅上面的David C. Rankin的评论。由于您已经有一个计数器i,请在行

之前插入if (i == max) { printf ("Too Big!\n"); break; }
        mem[i] = num;

当然,您必须将max传递给load()函数。