免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1689 | 回复: 1
打印 上一主题 下一主题

[函数] 求助:是不是函数返回值出现的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-10 14:07 |只看该作者 |倒序浏览
/*
说明:函数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]:

论坛徽章:
0
2 [报告]
发表于 2007-08-10 16:32 |只看该作者
设断点
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP