如何在C中存储程序中的变量?

时间:2015-09-07 14:02:09

标签: c variables time

我正在编写一个程序来组织一些项目。它首先获取日期/时间并随机生成一些项目列表。但是下次运行它时,程序不应该生成与上次相同的任何项目。所以基本上日期和时间就像随机生成的种子。

但有没有办法将数据存储在程序之外?这样我可以关闭程序和我的电脑,但是当我返回时它仍然会记住变量。

我已经考虑过了,似乎唯一的方法是进入程序并手动定义变量。所以我还没有尝试任何东西,显示我的代码毫无意义。请告诉我是否有外部存储变量的方法,或者您是否有其他替代解决方案。

4 个答案:

答案 0 :(得分: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 */

答案 1 :(得分:1)

您有两种选择:

  • 使用文件

    这是最简单的方法: 第一次,您只需要打开(并创建)一个文件(man fopen),在其中编写变量(man fwrite)。

    每次下次,您都需要打开该文件,并从中读取变量(man fread)。

  • 使用数据库

    更难,但如果您需要存储许多数据则更好。这不是你的情况,所以只需使用文件

答案 2 :(得分:1)

一般的想法是使用非易失性RAM。 您可以使用文件模仿相同的内容。 在关闭程序并在程序启动期间读取相同内容时,需要注意编写上下文的内容。 对于使用Files进行编程,您可以参考任何一个好网站。

答案 3 :(得分:0)

保存不同类型的许多变量的经典方法是serialization。但是C中没有标准的序列化方法,因此您需要实现自己的或使用现有的(例如,tplgwser)。如果您只需要保存一两个变量,则使用fopen() + printf() + fclose()会更简单。