Нечитаемые символы, вероятно, вызваны тем, что строка короче 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);
}
}
}