Как записать в файл по определенному пути в Linux с помощью C - PullRequest
0 голосов
/ 21 апреля 2011

Я хочу записать в файл chunkcombined.playlist, расположенный по пути /var/streaming/playlists/chunkcombined/chunkcombined.playlist, используя C.

Когда файлы (небольшие фрагменты видео) принимаются через сокет, я хочу автоматически добавить их в список воспроизведения.

Для этого я хочу написать следующие строки в файле chunkcombined.playlist, используя C:

"/usr/local/movies//chunk0.mp4" 1
"/usr/local/movies//chunk1.mp4" 1
"/usr/local/movies//chunk2.mp4" 1
"/usr/local/movies//chunk3.mp4" 5
"/usr/local/movies//chunk4.mp4" 5

Как я могу записать в файл по определенному пути в Linux, используя C?

1 Ответ

2 голосов
/ 21 апреля 2011

Использование fopen() и fputs() функций.

Полный пример (с чрезмерными комментариями):

#include <stdio.h>

int main(void)
{
    /* where to write */
    const char filepath[] =
        "/var/streaming/playlists/chunkcombined/chunkcombined.playlist";

    /* what to write */
    const char output_lines[] = 
        "\"/usr/local/movies//chunk0.mp4\" 1\n"
        "\"/usr/local/movies//chunk1.mp4\" 1\n"
        "\"/usr/local/movies//chunk2.mp4\" 1\n"
        "\"/usr/local/movies//chunk3.mp4\" 5\n"
        "\"/usr/local/movies//chunk4.mp4\" 5\n";

    /* define file handle */ 
    FILE *output;

    /* open the file */
    output = fopen(filepath, "wb");
    if(output == NULL) return -1; /* fopen failed */

    /* write the lines */
    fputs(output_lines, output);

    /* close the file */
    fclose(output);

    return 0;
}

Эта версияизвлекает текстовую строку, заданную в качестве аргумента программы, и затем записывает ее в нужный файл:

#include <stdio.h>

int main(int argc, char *argv[])
{
    if(argv[1] == NULL) return -1; /* no arguments, bail out */

    /* where to write */
    const char filepath[] =
        "/var/streaming/playlists/chunkcombined/chunkcombined.playlist";

    /* define file handle */ 
    FILE *output;

    /* open the file */
    output = fopen(filepath, "wb"); /* change "wb" to "ab" for append mode */
    if(output == NULL) return -1; /* fopen failed */

    /* write the lines */
    fputs(argv[1], output);
    putc('\n', output);

    /* close the file */
    fclose(output);

    return 0;
}

Пример:

./write "\"Hello, World!\""

пишет: "Hello, World!"

до:

/var/streaming/playlists/chunkcombined/chunkcombined.playlist.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...