gpt4 book ai didi

c - 错误检查,寻求一些指导

转载 作者:行者123 更新时间:2023-11-30 17:09:38 25 4
gpt4 key购买 nike

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

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

换句话说,当文本文件尝试存储超过 maxSize 的更多数字时,我需要打印出一条错误消息,例如 printf("too big");

如果我的文本文件少于 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;
}

最佳答案

请参阅上面 David C. Rankin 的评论。由于您已经有一个计数器 i,因此插入 if (i == max) { printf ("Too Big!\n");休息; } 行前

        mem[i] = num;

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

关于c - 错误检查,寻求一些指导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33193264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com