2015-09-07 4 views
0

Я пишу программу для организации некоторых предметов. Он начинается с получения даты/времени и случайного генерирования списка некоторых элементов. Но в следующий раз, когда вы запустите его, программа не должна генерировать какие-либо из тех же элементов, что и в прошлый раз. Таким образом, в принципе дата и время похожи на семя для случайного генерации.Как сохранить переменную из программы в C?

Но есть ли способ хранить данные за пределами программы? Таким образом, я могу закрыть программу и мой компьютер, но когда я возвращаюсь, он все еще помнит переменную.

Я думал об этом, и кажется, что единственный способ - пойти в программу и вручную определить переменную. Поэтому я еще ничего не пробовал, и было бы бессмысленно показывать мой код. Скажите, пожалуйста, есть ли способ хранить переменную или хранить альтернативные решения.

+13

Эта неуловимая вещь, о которой вы думаете, называется файлом. – EOF

+1

... или база данных –

+0

Лучше - реестр – i486

ответ

1

У вас есть два варианта:.

  • Использование файла

    Пришло самый простой способ сделать это: В первый раз вам просто нужно открыть (и создать) файл (man fopen), записать в него свою переменную (man fwrite).

    В следующий раз вам нужно будет открыть файл и прочитать его переменную (man fread).

  • Использование базы данных

    Harder, но лучше, если вам нужно хранить много ДАННЫЕ. Это не ваш случай, поэтому просто зайдите в файл

1

Для хранения данных извне, так что он сохраняется, используйте файл (http://www.cplusplus.com/reference/cstdio/fopen/)

FILE *fp; 

/* open a file in write mode */ 
if (fp = fopen("myfilename", "w")) { 
    fprintf(fp, "Hello world"); 
    if (fclose(fp) == EOF) /* fclose returns EOF on error */ 
     perror("fclose"); 
} else 
    perror("fopen"); /* error */ 

/* open the file in read mode */ 
char line[80]; 
if (fp = fopen("myfilename", "r")) { 
    fgets(line, 79, fp); /* read the first line */ 
    printf("%s", line); 

    if (fclose(fp)) 
     perror("fclose"); 
} else 
    perror("fopen"); /* error */ 
+0

Я не генерирую одинаковые числа каждый раз, я использовал 'srand (time (NULL))' Мне просто нужен способ изменить данные в файле через программу –

1

Общая идея заключается в использовании нелетучего ОЗУ. Вы можете имитировать то же самое, используя файл. Нужно позаботиться о написании содержимого контекста перед тем, как закрыть программу и прочитать ее во время запуска программы. Для программирования с помощью файлов вы можете ссылаться на любой из хороших сайтов.

0

Классический способ сохранения многих переменных различных типов - serialization. Но в C нет стандартного метода сериализации, поэтому вам нужно реализовать свой собственный или использовать существующий (например, tpl или gwser). Если вам нужно сохранить только одну-две переменные, проще использовать fopen() + printf() + fclose().

Смежные вопросы