大侠您好:
谢谢您的解答
我的完整程序是下面的(与我先前的叙述有点不同),烦您在百忙中给我分析一下:
谢谢
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <malloc.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
struct student {
char time[14]; //系统实时时间
char space[10]; //10个空格
char age[5]; //5位数
};
main()
{
FILE *fp;
int i,q,w,e,r,t,y;
struct student k[10];
time_t timep;
struct tm *p;
char buff[30],zz[14],adn[5];
int ijw;
int sig=6;//转换参数
for(i=0;i<10;i++) //每隔1秒填充一个结构体
{ double s;
int j,n;
float hh;
unsigned long m[100],temp;
int q,fd,count; //driver is open
unsigned long result,f=0;
s=0; // 1,此处手工写入double数,程序有不同反应,问题也正是出在这里.
gcvt(s,sig,adn); //把S转换为字符给adn
time(&timep); //获取系统时间
p=gmtime(&timep);
q=(1900+p->tm_year);
w=(1+p->tm_mon);
e=p->tm_mday;
r=p->tm_hour;
t=p->tm_min;
y=p->tm_sec;
printf("%f\n",hh);
printf("%s\n",adn);
printf("%d_%d_%d\n",q,w,e);
printf("%d_%d_%d\n", r,t,y);
sprintf(zz, "%04d%02d%02d%02d%02d%02d", q, w, e, r,t,y); //把系统时间给ZZ
//下面是给结构体填充值并循环10次得10个结构体值
strcpy( k[i].time,zz);
strcpy(k[i].space," ");
strcpy( k[i].age,adn);
sleep(1); //时间停1秒,这是在LINUX下函数,如不行改成其它函数
}
//下面是建立以当前时间命名的文件
time(&timep);
p=gmtime(&timep);
q=(1900+p->tm_year);
w=(1+p->tm_mon);
e=p->tm_mday;
r=p->tm_hour;
t=p->tm_min;
sprintf(buff, "c:\%04d.%02d.%02d-%02d.%02d.txt", q, w, e, r,t);//在C盘目录下保存文件
if((fp = fopen(buff, "a+"))== NULL)
{printf("no open");}
//下面语句是把10个结构体依次文件写入上面建立文件中
for(ijw = 0; ijw <10; ijw++)
{
fwrite(k+ijw, sizeof(struct student),1, fp);
fprintf(fp,"\r\n");
}//把信息写入文件
rewind(fp); //重定位文件
fclose(fp);
}
问题是:
1, 如果S是一位数0,文件结果(系统时间有的调整有的未调整)为:
20340405221828 0 @x?@
20340405221829 0 @?