【发布时间】:2019-09-29 00:54:00
【问题描述】:
下面的代码是一个压缩了一些的 C 程序。他们正在共享文件夹,有些大约有 6G。但是C:/盘现在只有4G空闲了,而且每次脚本运行都会加载,相信是临时文件的原因。
但是我已经把Winrar中临时文件的文件夹改成了选项>设置>路径>临时文件的文件夹:“E:\temp”。
会发生什么?看,代码基本是这样的(一些sn-ps,这里改个目录就可以压缩,去掉就可以总结了):
#include <iostream>
#include <ctime>
#include <stdio.h>
#include <string.h>
#include <cstdlib>
using namespace std;
int main(){
char comando [150]={""};
char ano [3];
char mes [3];
char dia[3];
char data[15] ={""};
char pasta[15] = {""};
char *Pont_Pasta = pasta;
unsigned long tempo_Espera = 100000;
time_t t = time(0);
struct tm * now = localtime (& t);
sprintf(ano,"%i",now->tm_year+1900);
sprintf(mes,"%i",now->tm_mon+1);
sprintf(dia,"%i",now->tm_mday);
strcat(data,"_");
strcat(data,ano);
strcat(data,"_");
strcat(data,mes);
strcat(data,"_");
strcat(data,dia);
strcat(comando,"start c:\\arquiv~1\\winrar\\rar a E:\\backup\\aquisicao\\aquisicao");strcat(comando,data);strcat(comando,".rar E:\\aquisicao");
system(comando);
strcpy(comando,"");
_sleep(tempo_Espera);
(...)
return 0;
}
@phuclv 我没有创建此代码,但我知道 strcp 用于清除字符串命令。至于日期线,我是这样写的:
time_t rawtime;
struct tm * timeinfo;
char data[30];
time (&rawtime);
timeinfo = localtime(&rawtime);
strftime(data,30,"_%Y%m%d",timeinfo);
【问题讨论】:
-
这是题外话。无论如何,您的代码有很多多余的
strcpys。做sprintf(data, "%d_%d_%d", now->tm_year+1900, now->tm_mon+1, now->tm_mday);不应该更容易更快吗?那strcpy(comando,"");有什么意义呢?
标签: compression c winrar