首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >写入后文件中的垃圾值

写入后文件中的垃圾值
EN

Stack Overflow用户
提问于 2015-04-09 10:29:06
回答 1查看 952关注 0票数 0

我正在创建一个日志函数,它存储在一个文件中。

代码语言:javascript
复制
int log_func(char* msg)
{
    int log_fd=0;
    ssize_t write_ret=0;
    int close_logfile_ret=0;
    time_t result;
    char error_msg[MAX_LOG_MSG_LEN]={' '};
    log_fd = open("/home/pi/log_client.txt", O_CREAT|O_APPEND|O_WRONLY);
    if(log_fd==-1)
    {
        printf("log failed !!----file open");
        exit(1);
    }

    result = time(NULL);
    snprintf(error_msg,MAX_LOG_MSG_LEN,"DALI_Server:%s:%s",asctime(localtime(&result)),msg);
    write_ret = write(log_fd,error_msg,sizeof(error_msg));

    if(write_ret == -1)
    {
        printf("log failed !!---- write");
        exit(1);
    }

    close_logfile_ret = close(log_fd);
    if(close_logfile_ret == -1)
    {
        printf("log failed !!---- close");
        exit(1);
    }
    return 0;
}

在这里,数组error_msg已初始化为“space”。但是,当我少写一些字符给它时,我会得到如下结果。

输入:文件中的log_func("DALI Server Started");log_func("File open/create...");输出:

代码语言:javascript
复制
DALI_Server:Thu Jan 16 16:53:56 2014
:DALI Server started ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@DALI_Server:Thu Jan 16 16:54:06 2014
File open/create...^@^@^@^@^@^@^@^@^@..

为什么垃圾人物会来。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-09 10:33:24

您可以编写整个error_msg数组,甚至字符串终止符之后的内容。相反,您应该使用strlen来获取数组中字符串的长度,并且只编写:

代码语言:javascript
复制
write_ret = write(log_fd, error_msg, strlen(error_msg));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29536010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档