Я создаю программу, которая имеет следующий желаемый результат:
Я пытаюсь понять, нахожусь ли я на правильном пути. Моя цель - записать все три числовых ввода в массив, а затем в файл .dat.
Нужно ли мне создавать 3d-матрицу, например, так: numbers[3][5]
?
Если я сделаю это, я столкнусь с проблемой, из-за которой у меня возникают трудности с сохранением, записью и печатью массива должным образом, как показано ниже. Хотя все в порядке, я могу исследовать это сам, если так. Я просто ищу немного направления.
Мой текущий рабочий код:
#include <stdio.h>
#include <stdlib.h>
// function prototypes
void writeToDat(int numbers[5]);
void writeToArray(int number, int numbers[5]);
void displayArray(int numbers[5]);
int getNumber(int number);
// begin main function
int main(void){
int number;
int numbers[5]={0,0,0,0,0};
number = getNumber(number);
writeToArray(number, numbers);
displayArray(numbers);
writeToDat(numbers);
return 0;
} // end main function
void displayArray(int numbers[5]){
int i=0;
for (i=0;i<5;i++){
printf("%d ", numbers[i]);
}
} // end displayArray function
// function which gets the array ready to go
void writeToArray(int number, int numbers[5]){
int i=0;
int j=0;
int count=1;
for(j=0;j<5;j++)
{
numbers[j] = (number*count) ;
count++;
}
} // end function writeToArray
int getNumber(int number){
number = 0;
printf("Please enter a number (0 to terminate): ");
scanf("%d", &number);
return number;
} // end function getNumber
// function which writes the current array into the .dat file
void writeToDat(int numbers[5]){
FILE *file;
file = fopen("question4.dat","w");
if(file == NULL)
{
printf("question3.dat cannot be opened!\n");
fprintf(stderr, "Error opening the fil!\n");
}
else{
int j=0;
for(j=0;j<5;j++){
fprintf(file, "%d ,", numbers[j]);
}
}
fclose(file);
} // end function writeToDat
Вот моя попытка создать 3D-массив, прежде чем я попросил о помощи.
#include <stdio.h>
#include <stdlib.h>
// function prototypes
void writeToDat(int numbers[3][5]);
void writeToArray(int number, int numbers[3][5], int *arrayCount);
void displayArray(int numbers[3][5]);
int getNumber(int number, int *arrayCount);
// begin main function
int main(void){
int number;
int numbers[3][5];
int * arrayCount=0;
number = getNumber(number, arrayCount);
writeToArray(number, numbers, arrayCount);
arrayCount++;
number = getNumber(number, arrayCount);
writeToArray(number, numbers, arrayCount);
arrayCount++;
displayArray(numbers);
writeToDat(numbers);
return 0;
} // end main function
void displayArray(int numbers[3][5]){
int i=0;
int j=0;
for (i=0;i<3;i++){
for (j=0;j<5;j++){
printf("%d ", numbers[i][j]);
}printf("\n");
}
} // end displayArray function
// function which gets the array ready to go
void writeToArray(int number, int numbers[3][5], int *arrayCount){
int i=0;
int j=0;
int count=1;
for (i=0;i<3;i++)
{
for(j=0;j<5;j++)
{
numbers[i][j] = (number*count) ;
count++;
}
}
} // end function writeToArray
int getNumber(int number, int *arrayCount){
number = 0;
printf("Please enter a number (0 to terminate): ");
scanf("%d", &number);
return number;
} // end function getNumber
// function which writes the current array into the .dat file
void writeToDat(int numbers[3][5]){
FILE *file;
file = fopen("question4.dat","w");
if(file == NULL)
{
printf("question3.dat cannot be opened!\n");
fprintf(stderr, "Error opening the fil!\n");
}
else{
int j=0;
int i=0;
for(i=0;i<3;i++){
for(j=0;j<5;j++){
fprintf(file, "%d ,", numbers[i][j]);
}
}
}
fclose(file);
} // end function writeToDat