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

问题描述 投票:2回答:1

“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;
}
c windows command system
1个回答
1
投票

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

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

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

sprintf(cmd, "echo \"%s %s\" >> reports.log", comment, now());
© www.soinside.com 2019 - 2024. All rights reserved.