| 
 前言: 代码如下: #include <time.h> int main() { //  //  /*获取系统前一天日期*/ /*获取指定文件夹下的指定格式的文件(E或NE开头的时间为前一天的文件)*/ /*解析文件并写入数据库*/ char buf[BUFSIZE];/*单行数据缓存*/ char yhbh[4];/*银行编号*/ char temp[1024];// if((fp = fopen(filePath, “r”)) == NULL) { // 判断文件名是以E开头还是NE开头的 char *ne = “NE”; sql_BeginTrans(); //sql_BeginTrans();  | 
|
| 100分 | 
 
获取前一天不能简单地将日期减一。 
 | 
| 
 那要怎么做?  | 
|
#include <stdio.h>
#include <windows.h>
char *getYesterday() {
    FILETIME ft;
    SYSTEMTIME st;
    static char yesterday[9];
    GetSystemTimeAsFileTime(&ft);
    *(__int64 *)&ft-=864000000000i64;
    FileTimeToSystemTime(&ft,&st);
    sprintf(yesterday,"%4d%02d%02d",st.wYear, st.wMonth, st.wDay);
    return (char *)yesterday;
}
int main() {
    printf("%s\n",getYesterday());
    return 0;
}
 | 
|
| 
 如果是在Linux下就不能用了吧,我看这边引了windows.h  | 
|
| 
 
在请教下哈  
GetSystemTimeAsFileTime(&ft); *(__int64 *)&ft-=864000000000i64; FileTimeToSystemTime(&ft,&st); 这个是个什么意思?  | 
|
| 
 你一楼给的代码里面不是也用了SYSTEMTIME吗?linux下有SYSTEMTIME?  | 
|
 说  | 
|
 GetSystemTimeAsFileTime(&ft);//取当前系统时间放在ft中 *(__int64 *)&ft-=864000000000i64;//将ft减去86400秒 FileTimeToSystemTime(&ft,&st);//将ft转为st  | 
|
  | 
|
| 
 
对于头文件的引用,不晓得下面这些正确吗? 
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <dirent.h> #include <time.h> #include <sqlca.h>  | 
|
| 
 
你代码中: 
// 连接数据库并插入数据 EXEC SQL CONNECT GAPS/GAPS; 需要进一步编写函数完成对应功能。 参考oracle中的例子代码demo\*.*  | 
|
 fprintf(sql,”insert into yw_dsdf_dzxx_hb values(“”%s””,””%s””,””%s””,””%s””,””%s””,””%d””,””%s””,””%d””)”,yhbh,gyh,yhlsh,yhbh_1,jfrq,sfje,sfqd,isznbsf); EXEC SQL INSERT INTO yw_dsdf_dzxx_hb values(sql);  | 
|
| 
 
参考oracle中的例子代码demo\*.* 
 | 
|
 参考了demo例子,还是出现那个问题,在引入sql头文件时,  | 
|
| 
 
先将demo目录下插入数据的例子编译链接调试通过,再将其中操作数据库相关部分照搬到自己的代码中。 
 | 
|
| 
 
突然回来结个贴。不好意思,问题解决了。 
 | 
|
| 
 
迟来的幸福! 
 | 
|