- 论坛徽章:
- 0
|
/*
说明:函数char *GetDate(char *date_str)得到系统的日期,并把其转换成字符串格式,若月或日小于10,则加一个前缀0
如2007年8月8日,则转换成20070808的字符串格式,该函数返回该字符串,在main函数中显示该字符串,并将该字符串作为
一文件的文件名,并将该文件名写入该文件。
结果和出现问题:我是在xp系统下用tc 2.0编译和运行的,能显示该字符串,并且能创建以该字符串命名的文件,但是却没有将
该字符串写入文件,还出现“NTVDM CPU遇到无效的指令的错误”。请问是不是GetDate()函数返回出现了问题,请指教。
*/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <dos.h>
char *GetDate(char *date_str);
int main(void)
{
char file[9];
char *filename=file;
FILE *fp;
GetDate(filename);/*返回字符串格式的日期*/
puts(filename); /*显示*/
if((fp=fopen(filename,"w"))==NULL)/*以系统日期为文件名创建*/
{
puts("can not find the file");
exit(0);
}
fputs(filename,fp);/*将文件名写入文件*/
getch();
return 0;
}
/*函数:char *GetDate(char *date_str) */
/*说明:得到系统的日期,并把其转换成字符串格式,若月或日小于10,则加一个前缀0*/
/* 如2007年8月8日,则转换成20070808的字符串格式*/
/*返回值:返回已经转换的字符串date_str*/
char *GetDate(char *date_str)
{
struct date d; /*日期结构*/
struct date *p_date;
char temp_1,temp_2[2];/*用于整数转换成字符的临时变量*/
p_date = &d;
getdate(p_date);/*得到系统日期*/
itoa(p_date->da_year,date_str,10);/*把年转换成字符串格式*/
if(p_date->da_mon<10) /*假如月份小于10(如8),则把月份转换成08的字符串格式*/
{
itoa(0,&temp_1,10);
date_str[4] = temp_1;
itoa(p_date->da_mon,&temp_1,10);
date_str[5] = temp_1;
}
else /*月份不小于10,则直接转换成字符串格式*/
{
itoa(p_date->da_mon,temp_2,10);
date_str[4] = temp_2[0];
date_str[5] = temp_2[1];
}
if(p_date->da_day<10) /*假如日小于10(如8),则把月份转换成08的字符串格式*/
{
itoa(0,&temp_1,10);
date_str[6] = temp_1;
itoa(p_date->da_day,&temp_1,10);
date_str[7] = temp_1;
date_str[8] = '\0';
}
else /*日不小于10,则直接转换成字符串格式*/
{
itoa(p_date->da_day,temp_2,10);
date_str[6] = temp_2[0];
date_str[7] = temp_2[1];
date_str[8] = '\0';
}
return (date_str); /*函数返回值*/
}
源程序文件[local]1[/local]: |
|