Проблема добавления текста в файл с помощью system (), fgets и sprintf, в C - PullRequest
0 голосов
/ 07 января 2019

Следующий код из книги «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;
}

1 Ответ

0 голосов
/ 07 января 2019

Кажется, что книга написана с учетом Unix-подобных систем. Windows cmd не использует одинарные кавычки, поэтому следующий код:

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

следует изменить, чтобы использовать двойные кавычки, например:

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