所以,我有一个 C 程序可以做一些事情。一,它打印一个从文件中读取的矩阵。
我的问题:一些非常具体的 printfs 在被调用时经常不显示,有时它们只打印它们应该打印的部分内容,有时它们完全打印。
这是一个 5x5 矩阵,有时打印得很好,有时只打印 2 行,有时不打印任何内容。此函数由接受用户输入的菜单调用。
void imprimirMapa(TipoLote matrizLotes[][COL], FILE *fptr) {
fptr = fopen("../mapa.bin", "rb");
fread(matrizLotes, sizeof (TipoLote), LIN*COL, fptr);
for (int i = 0; i < LIN; i++) {
for (int j = 0; j < COL; j++) {
fflush(stdout);
printf("%s", matrizLotes[i][j].reservaAtual.alojamento);
printf("%c", matrizLotes[i][j].reservaAtual.eletricidade);
printf("%c", matrizLotes[i][j].reservaAtual.numeroCampistas);
printf("\t");
}
printf("\n");
}
fclose(fptr);
}
这只是一些用于用户输入的基本 printfs,前 2 个 printf 根本不打印,但它仍然需要用户输入,当我注册用户输入时,第三个 printf 已经可以正常工作了。
fread(matrizLotes, sizeof(TipoLote), LIN*COL, fptr);
fflush(stdout);
printf("********** Registar uma Reserva **********\n");
printf("Escolha um lote a reservar (linha)\n");
scanf("%d", &linha);
printf("Escolha um lote a reservar (coluna)\n");
scanf("%d", &coluna);
int main() {
setlocale(LC_ALL, "Portuguese");
char vazio[2] = ".";
FILE *fptr;
TipoLote matrizLotes[LIN][COL] = {};
fptr = fopen("../mapa.bin", "rb+");
for (int i = 0; i < LIN; i++) {
for (int j = 0; j < COL; j++) {
strcpy(matrizLotes[i][j].reservaAtual.alojamento, vazio);
strcpy(&matrizLotes[i][j].reservaAtual.eletricidade, vazio);
strcpy(&matrizLotes[i][j].reservaAtual.numeroCampistas, vazio);
}
}
fwrite(matrizLotes, sizeof(TipoLote), LIN * COL, fptr);
imprimirMenu(matrizLotes, fptr);
fclose(fptr);
return 0;
}
我正在使用 minGW 编译器在 CLion 中运行此代码。