我正在编写一个程序来组织一些项目。它首先获取日期/时间并随机生成一些项目列表。但是下次运行它时,程序不应该生成与上次相同的任何项目。所以基本上日期和时间就像随机生成的种子。
但有没有办法将数据存储在程序之外?这样我可以关闭程序和我的电脑,但是当我返回时它仍然会记住变量。
我已经考虑过了,似乎唯一的方法是进入程序并手动定义变量。所以我还没有尝试任何东西,显示我的代码毫无意义。请告诉我是否有外部存储变量的方法,或者您是否有其他替代解决方案。
答案 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中没有标准的序列化方法,因此您需要实现自己的或使用现有的(例如,tpl或gwser)。如果您只需要保存一两个变量,则使用fopen()
+ printf()
+ fclose()
会更简单。