帮我写两个函数,一个函数set是把值存入文件中,一个函数get是从文件取值,set函数被调用1次,get函数被调用时就从文件中拿到set函数存储的值,然后删除文件,set函数被调用两次的话,然后调用get时第一次取的是第一次的值,第二次调用取得是第二次的值,然后删除文件
时间: 2024-04-15 08:29:51 浏览: 104
下面是两个函数的实现,一个是Set函数用于将值存储到文件中,另一个是Get函数用于从文件中获取值并删除文件:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Set(const char *value) {
FILE *file = fopen("value.txt", "w");
if (file == NULL) {
printf("Failed to open file\n");
return;
}
fputs(value, file);
fclose(file);
}
const char* Get() {
FILE *file = fopen("value.txt", "r");
if (file == NULL) {
printf("Failed to open file\n");
return NULL;
}
char *value = malloc(1000); // 假设值的最大长度为1000
if (value == NULL) {
printf("Failed to allocate memory for value\n");
fclose(file);
return NULL;
}
fgets(value, 1000, file);
fclose(file);
remove("value.txt");
return value;
}
```
在Set函数中,我们打开文件"value.txt"并将值写入文件中。在Get函数中,我们打开文件"value.txt",读取文件中的值,然后删除文件。
调用示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include "shared_library.h"
int main() {
// 进程1:第一次调用Set函数,并传入值
Set("Value 1");
// 进程2:第一次调用Get函数
const char *result1 = Get();
printf("First value: %s\n", result1);
// 进程1:第二次调用Set函数,并传入新的值
Set("Value 2");
// 进程2:第二次调用Get函数
const char *result2 = Get();
printf("Second value: %s\n", result2);
// 释放内存
free((void*)result1);
free((void*)result2);
return 0;
}
```
在示例中,我们首先在进程1中调用Set函数并传入值"Value 1"。然后在进程2中调用Get函数,它会从文件中获取值并打印出来,然后删除文件。接下来,进程1再次调用Set函数并传入新的值"Value 2"。最后,在进程2中再次调用Get函数,它会获取到第二次设置的值并打印出来。
希望这个函数能满足你的需求!如果你还有其他问题,请随时提问。
阅读全文