Добавление нескольких строк в текстовый файл? - PullRequest
0 голосов
/ 10 сентября 2009

Я использую базовый код C для печати в текстовый файл:

FILE *file;
file = fopen("zach.txt", "a+"); //add text to file if exists, create file if file does not exist

fprintf(file, "%s", "This is just an example :)\n"); //writes to file
fclose(file); //close file after writing

printf("File has been written. Please review. \n");

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

Ответы [ 2 ]

2 голосов
/ 10 сентября 2009

Переместить запись файла в процедуру:

void write_lines (FILE *fp) {
    fprintf (file, "%s\n", "Line 1");
    fprintf (file, "%s %d\n", "Line", 2);
    fprintf (file, "Multiple\nlines\n%s", "in one call\n");
}

int main () {
    FILE *file = fopen ("zach.txt", "a+");
    assert (file != NULL); // Basic error checking
    write_lines (file);
    fclose (file);
    printf ("File has been written. Please review. \n");
    return 0;
}
1 голос
/ 10 сентября 2009

Есть много способов сделать это, вот один:

#include<stdio.h>
#include<string.h>

int appendToFile(char *text, char *fileName) {

    FILE *file;

    //no need to continue if the file can't be opened.
    if( ! (file = fopen(fileName, "a+"))) return 0;

    fprintf(file, "%s", text);
    fclose(file);

    //returning 1 rather than 0 makes the if statement in
    //main make more sense.
    return 1;

}

int main() {

    char someText[256];

    //could use snprintf for formatted output, but we don't
    //really need that here. Note that strncpy is used first
    //and strncat used for the rest of the lines. This part
    //could just be one big string constant or it could be
    //abstracted to yet another function if you wanted.
    strncpy(someText, "Here is some text!\n", 256);
    strncat(someText, "It is on multiple lines.\n", 256);
    strncat(someText, "Hooray!\n", 256);

    if(appendToFile(someText, "zach.txt")) {
        printf("Text file ./zach.txt has been written to.");
    } else {
        printf("Could not write to ./zach.txt.");
    }

    return 0;

}

обратите внимание на функции strncpy и strncat, поскольку вы на самом деле не используете форматированный ввод, который поставляется с функциями xprintf.

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