В C, чтобы сохранить больше значений в базе данных (файлы), введите int и вызовите конкретную строку - PullRequest
0 голосов
/ 02 ноября 2019

В Си, как хранить массив в файле (базе данных) и как получить к нему доступ в программе. В этой программе, когда я ввожу индексный номер для примера 2 (который содержит 30), после того, как я хочу вычесть возраст на 5, тогда он показывает 25, но когда я хочу изменить индексный номер 2, тогда он вычитается из 25 ,,, неиз данного индекса Например, у меня есть значение хранилища в файле базы данных (data2.txt). Вот так .. 10 20 30 40 И я хочу увеличить или обновить значение (30), так что я могу изменить ...

  #include <stdio.h>
    #define PATH "/storage/emulated/0/c language/data2.txt"
    int main()
    {
        FILE *file;
        int age[], s, i;
        printf("Enter the array index:");
        scanf("%d", &i);
        file = fopen(PATH, "r");
        if (file == NULL)
        {
            printf("files does not exist");
            return 1;
        }
        fscanf(file, "%d", &age[i]);
        fclose(file);
        printf("Enter how much age should to be subtracted:");
        scanf("%d", &s);
        file = fopen(PATH, "w");
        age[i] = age[i] - s;
        fprintf(file, "%d", age[i]);
        fclose(file);
        printf("%d", age[i]);
    }

1 Ответ

1 голос
/ 02 ноября 2019

Если вы не хотите сбрасывать свой файл, вы должны использовать параметр «a», потому что теперь, когда вы хотите обновить значение в файле, вы сохраняете только 25 (как в ex), все остальные значения пропали (но «a»)добавляет сохраненное значение в EOF). Если я правильно понял, вы пытаетесь прочитать 3 переменные из файла, но когда вы делаете это:

fscanf(file, "%d", &age[i]);

, вы получаете только первую переменную в файле. Если вы хотите получить третью, вам нужно вызывать эту функцию еще 2 раза.

Лучше получить все данные в массиве в цикле и затем работать с массивом.

#include <stdio.h>
#define SIZE 40
    int main()
    {
        FILE *file;
        int age[SIZE], s,i, j=0;
        printf("Enter the array index:");
        scanf("%d", &i);
        file = fopen("data.txt", "r");
        if (file == NULL)
        {
            printf("files does not exist");
            return 1;
        }
        while(1){ //getting all data from file to array
          if(feof(file))
            break;
          fscanf(file, "%d", &age[j++]); 
        }
        for(int x=0;x<j;x++)
          printf("%d ",age[x]);
        fclose(file);
        printf("\nEnter how much age should to be subtracted:");
        scanf("%d", &s);
        file = fopen("data.txt", "w");
        age[i] -= s;
        for(int k=0;k<j;k++) //passing updated data to file
          fprintf(file, "%d ", age[k]);
        fclose(file);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...