免费注册 查看新帖 |

Chinaunix

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

请大家帮忙看一下这个程序!谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-01 11:40 |只看该作者 |倒序浏览
是这样的,我写了一个打印函数
void printerror(char* szMsg)
{
        time_t ltime;
        struct tm* gmt;
        FILE* fplog = fopen(szLogFile, "a+b");               /*Log 文件的句柄*/
       
        psv_time(&ltime);                                          /* 这是我自己写的函数,得到监控程序的运行时间 */
        gmt = localtime(&ltime);                                      /* 换算成本地时间 */

        fprintf(fplog, "[%d:%02d:%02d:%02d:%02d] %s", gmt->tm_year+1900, gmt->tm_mon+1, gmt->tm_mday, gmt->tm_hour, gmt->tm_min, szMsg);
        fflush(fplog);
}
另有一个socket通信的函数
if( connect(......) == -1 )
{
       printerror("error in connect \n");
}
有两个问题
1。程序每次执行到connect的时候就自己退出了,本来是应该打印信息的结果不打印。如果把printerror函数中的fprintf(...)换成fprintf(fplog,"%s%s",actime(gmt),szMsg)就能正常执行。但我想换成自己定义的时间格式,真的好奇怪!!!
2。printerror()中我自己写的的psv_time函数我明明把头文件包含进去了,但编译硬是说我没有申明,快疯了!!!
看在写这么多的份上,请大家指点一下阿,先谢了!

论坛徽章:
0
2 [报告]
发表于 2007-04-01 13:18 |只看该作者
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>

char *get_time(const char *fmt)
{
    time_t td;
    char *p;
    char buf[512];

    if (fmt == NULL) {
        errno = EINVAL;
        return NULL;
    }

    time(&td);
    if (!strftime(buf, 512, fmt, localtime(&td)))
        return NULL;

    p = (char *)malloc(sizeof(char) * strlen(buf));
    if (p == NULL)
        return NULL;
    strcpy(p, buf);

    return p;
}

int main(void)
{
    char *fmt = "%m/%d/%y, %H:%M:%S";   [color=#FF9900>/* define the format you like */

    char *time_info;

    time_info = get_time(fmt);
    if (time_info == NULL){
        printf("error\n");
        exit(1);
    }
    printf("%s\n", time_info);

    free(time_info);
    exit(1);
}

论坛徽章:
0
3 [报告]
发表于 2007-04-01 13:35 |只看该作者

回复 #2 sihan 的帖子

谢谢二楼的阿,能告诉我一下,我原来那个为什么不行么?

论坛徽章:
0
4 [报告]
发表于 2007-04-02 13:11 |只看该作者
#include &lt;time.h&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

#define szLogFile       &quot;log_msg.txt&quot;
#define psv_time        time

void printerror(char *szMsg)
{
&nbsp;&nbsp;&nbsp;&nbsp;time_t ltime;
&nbsp;&nbsp;&nbsp;&nbsp;struct tm *gmt;
&nbsp;&nbsp;&nbsp;&nbsp;FILE *fplog = fopen(szLogFile, &quot;a+b&quot;);

&nbsp;&nbsp;&nbsp;&nbsp;psv_time(&amp;ltime);

&nbsp;&nbsp;&nbsp;&nbsp;gmt = localtime(&amp;ltime);

&nbsp;&nbsp;&nbsp;&nbsp;fprintf(fplog, &quot;[%d:%d:%d:%d:%d] %s\n&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gmt-&gt;tm_year+1900, gmt-&gt;tm_mon+1, gmt-&gt;tm_mday,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gmt-&gt;tm_hour, gmt-&gt;tm_min, szMsg);
&nbsp;&nbsp;&nbsp;&nbsp;fflush(fplog);
}

int main(void)
{
&nbsp;&nbsp;&nbsp;&nbsp;char *msg = &quot;error in connect&quot;;

&nbsp;&nbsp;&nbsp;&nbsp;printerror(msg);

&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}



[sihan@sihan test]$ gcc -Wall test40.c
[sihan@sihan test]$ ./a.out
[sihan@sihan test]$ cat log_msg.txt
[2007:4:2:13:18] error in connect
[sihan@sihan test]$

论坛徽章:
0
5 [报告]
发表于 2007-04-02 14:55 |只看该作者
按二楼的那样写了,能用了
但是仍然不明白我哪里写错了,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP