使用system(),fgets和sprintf在C中将文本附加到文件的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用system(),fgets和sprintf在C中将文本附加到文件的问题相关的知识,希望对你有一定的参考价值。

“Head First C”一书中的以下代码显然应该可以工作,但是(在Windows 10上)我只是在其前面打印出comment的内容,并且没有编辑任何文件。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

char* now()
{
    time_t t;
    time (&t);
    return asctime(localtime (&t));
}

int main()
{
    char comment[80];
    char cmd[120];
    fgets(comment, 80, stdin);
    sprintf(cmd, "echo '%s %s' >> reports.log", comment, now());
    system(cmd);
    return 0;
}
答案

这本书显然似乎是用类似Unix的系统编写的。 Windows cmd不使用单引号,因此以下代码:

sprintf(cmd, "echo '%s %s' >> reports.log", comment, now());

应该更改为使用双引号,如下所示:

sprintf(cmd, "echo "%s %s" >> reports.log", comment, now());

以上是关于使用system(),fgets和sprintf在C中将文本附加到文件的问题的主要内容,如果未能解决你的问题,请参考以下文章

为啥 alarm() 导致 fgets() 停止等待?

C基础函数的使用

C基础函数的使用

printf 和sprintf

getdate函数的用法

不安全函数(转)