Как записать текстовый файл в другой с редактированием в C - PullRequest
0 голосов
/ 08 мая 2020

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

void generate(int n, const int numbers[]){

    FILE *tpl = fopen("code.tpl", "r");
    FILE *file = fopen("code.c", "w");
    char text[N];
    int i, j;

    fgets(text, N, tpl);

    for(i = 0; i < N; i++){
        if(text[i] == '?'){
            text[i]= ' ';
            fprintf(file, "%d", n);
        }
        fprintf(file, "%c", text[i]);
    }


      fclose(file);
      fclose(tpl);

}

Код не работает и записывает в код нечитаемый символ. c

1 Ответ

4 голосов
/ 08 мая 2020

Нечитаемые символы, вероятно, вызваны тем, что строка короче N символов, поэтому вы копируете неинициализированные символы в выходной файл. L oop должен остановиться, когда достигнет нулевого терминатора в text.

Также нет необходимости использовать fprintf() только для записи одного символа, используйте более простой fputc(). И вместо замены text[i] пробелом вы можете включить это в строку формата при записи n.

    for(i = 0; text[i] != 0; i++){
        if(text[i] == '?'){
            fprintf(file, "%d ", n);
        } else {
            fputc(text[i], file);
        }
    }

Если файл состоит из нескольких строк, вам нужно прочитать строки в al oop, а не одна строка:

while (fgets(text, N, tpl)) {
    for(i = 0; text[i] != 0; i++){
        if(text[i] == '?'){
            fprintf(file, "%d ", n);
        } else {
            fputc(text[i], file);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...