Я хотел создать простую базу данных, используя два файла, поместив имя в первый файл («Name_database») и поместив деньги во второй файл («Money_database»), но у меня есть ошибка, которая возникает, когда я закрываю оба файла, чтобы вставить новый текст один закройте и откройте заново, чтобы взять новый текст, а другой не сделайте то же самое, другой файл закроется и не займет новый текст для вставки
#include <stdlib.h>
#include <string.h>
#define Max_Name_Chars 20
#define Max_Accounts 100
char Name_Array[Max_Accounts][Max_Name_Chars];
int Money_Array[Max_Accounts];
int NumberOfElements ;
void getDatabasesData (FILE* Name_Database , FILE* Money_Database);
int getPlayerIndexFromName(char Name [Max_Name_Chars]);
void setDataAtDatabase (FILE* Name_Database , FILE* Money_Database , char Name [Max_Name_Chars] , int Money );
void saveDataBase(FILE* Name_Database , FILE* Money_Database);
int main()
{
FILE* Name_Database = fopen("Name_Database.txt", "a+");
FILE* Money_Database = fopen("Money_Database.txt", "a+");
setDataAtDatabase(Name_Database,Money_Database,"Big",50000);
fclose(Name_Database);
fclose(Money_Database);
return 0;
}
void getDatabasesData (FILE* Name_Database , FILE* Money_Database)
{
NumberOfElements = 0;
// Add to Name_Array
while(fgets(Name_Array[NumberOfElements], Max_Accounts, Name_Database)) {
Name_Array[NumberOfElements][strlen(Name_Array[NumberOfElements]) - 1] = '\0';
NumberOfElements++;
}
// Add to Money_Array
for (int i = 0; i < NumberOfElements; i++)
{
fscanf(Money_Database, "%d,", &Money_Array[i] );
}
}
int getPlayerIndexFromName(char Name [Max_Name_Chars])
{
for (int i = 0 ; i < NumberOfElements ; i++)
{
if (strcmp(Name_Array[i],Name) == 0)
{
return i;
}
}
return -1;
}
void setDataAtDatabase (FILE* Name_Database , FILE* Money_Database , char Name [Max_Name_Chars] , int Money )
{
getDatabasesData(Name_Database, Money_Database);
int Database_Player_Index = getPlayerIndexFromName(Name);
if (Database_Player_Index == -1)
{
strcpy(Name_Array[NumberOfElements],Name);
Money_Array[NumberOfElements] = Money;
NumberOfElements++;
//printf("%s %d",Name_Array[NumberOfElements],Money_Array[NumberOfElements]);
} else {
Money_Array[Database_Player_Index] = Money;
//printf("%s %d",Name_Array[Database_Player_Index],Money_Array[Database_Player_Index]);
}
saveDataBase(Name_Database,Money_Database);
}
void saveDataBase(FILE* Name_Database , FILE* Money_Database)
{
fclose(fopen("Name_Database.txt", "w"));
fclose(fopen("Money_Database.txt", "w"));
for (int i = 0 ; i < NumberOfElements ; i++)
{
fprintf(Name_Database,"%s\n",Name_Array[i]);
fprintf(Money_Database,"%d ",Money_Array[i]);
}
}
My First file text:
Большой Big2
Мой второй текст файла: 5000 1000