




template格式为: template.XXXXXX. 最后6位必须为XXXXXX, 前缀随意.
以下是测试代码:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#define LEN_FILE_NAME 256
#define TEMP_DIR "/home/sujp/temp/"
#define AREA_LIST 'A'
#define GENRU_LIST 'B'
/* Make temparory file */
int mk_temp_file(char file[])
{
int ret = 0; /* return value */
printf("the file name: %s \n", file);
if (mkstemp(file) < 0)
ret = -1;
else
printf("Temp file name: [%s] \n", file);
return ret;
}
/* Generate genru list file */
int genru_list()
{
int ret = 0; /* return value */
FILE *fp = NULL; /* file pointer */
char file[LEN_FILE_NAME];
memset(file, 0x00, sizeof(file));
strcpy(file, TEMP_DIR);
strcat(file,"sujp.genru.XXXXXX"); /* Set initial value (template) */
if (mk_temp_file(file) < 0) {
perror("mkstemp");
ret = -1;
}
else {
if((fp = fopen(file, "w")) == NULL) {
perror("fopen");
ret = -2;
}
}
fclose(fp);
return ret;
}
/* genrate area list file */
int area_list()
{
int ret = 0;
FILE *fp = NULL;
char file[LEN_FILE_NAME];
memset(file, 0x00, sizeof(file)); /* 将file数组中的每个字节全部格式化为十六进制 */
strcpy(file, TEMP_DIR); /* 将TEMP_DIR的内容复制到file中接到file内容后面 */
strcat(file, "sujp.area.XXXXXX"); /* 将目录与文件名接起来 */
if (mk_temp_file(file) < 0) { /* 返回的file为新生成的文件名 */
perror("mkstemp");
ret = -1;
}
else {
printf("program is running there.\n"); /* test program */
printf("the file name: %s \n", file); /* 测试返回的新数组内容 */
if ((fp = fopen(file, "w")) == NULL) {
perror("fopen");
ret = -2;
}
}
printf("return fp is %p\n", fp); /* 测试返回的文件指针地址 */
fclose(fp);
return ret;
}
int cutman(char c)
{
int ret = 0;
switch (c) {
case AREA_LIST:
ret = area_list();
break;
case GENRU_LIST:
ret = genru_list();
break;
default:
printf("Operation type error");
break;
}
return ret;
}
int main()
{
return cutman(AREA_LIST); /* 调用 'A'参数 */
}
#include <string.h>
#include <stdio.h>
#define LEN_FILE_NAME 256
#define TEMP_DIR "/home/sujp/temp/"
#define AREA_LIST 'A'
#define GENRU_LIST 'B'
/* Make temparory file */
int mk_temp_file(char file[])
{
int ret = 0; /* return value */
printf("the file name: %s \n", file);
if (mkstemp(file) < 0)
ret = -1;
else
printf("Temp file name: [%s] \n", file);
return ret;
}
/* Generate genru list file */
int genru_list()
{
int ret = 0; /* return value */
FILE *fp = NULL; /* file pointer */
char file[LEN_FILE_NAME];
memset(file, 0x00, sizeof(file));
strcpy(file, TEMP_DIR);
strcat(file,"sujp.genru.XXXXXX"); /* Set initial value (template) */
if (mk_temp_file(file) < 0) {
perror("mkstemp");
ret = -1;
}
else {
if((fp = fopen(file, "w")) == NULL) {
perror("fopen");
ret = -2;
}
}
fclose(fp);
return ret;
}
/* genrate area list file */
int area_list()
{
int ret = 0;
FILE *fp = NULL;
char file[LEN_FILE_NAME];
memset(file, 0x00, sizeof(file)); /* 将file数组中的每个字节全部格式化为十六进制 */
strcpy(file, TEMP_DIR); /* 将TEMP_DIR的内容复制到file中接到file内容后面 */
strcat(file, "sujp.area.XXXXXX"); /* 将目录与文件名接起来 */
if (mk_temp_file(file) < 0) { /* 返回的file为新生成的文件名 */
perror("mkstemp");
ret = -1;
}
else {
printf("program is running there.\n"); /* test program */
printf("the file name: %s \n", file); /* 测试返回的新数组内容 */
if ((fp = fopen(file, "w")) == NULL) {
perror("fopen");
ret = -2;
}
}
printf("return fp is %p\n", fp); /* 测试返回的文件指针地址 */
fclose(fp);
return ret;
}
int cutman(char c)
{
int ret = 0;
switch (c) {
case AREA_LIST:
ret = area_list();
break;
case GENRU_LIST:
ret = genru_list();
break;
default:
printf("Operation type error");
break;
}
return ret;
}
int main()
{
return cutman(AREA_LIST); /* 调用 'A'参数 */
}