Онлайн компилятор C

#include <stdio.h> #include <string.h> int main(void) { FILE *inputFile = fopen("input.txt", "r"); // Открываем файл для чтения FILE *outputFile = fopen("output.txt", "w"); // Открываем файл для записи char str[1001]; // Объявляем массив для хранения строки (с запасом на символ новой строки и нулевой символ) fgets(str, sizeof(str), inputFile); // Читаем строку из файла // Удаляем символ новой строки, если он есть в конце строки, прочитанной fgets if (str[strlen(str) - 1] == '\n') { str[strlen(str) - 1] = '\0'; } unsigned long len = strlen(str); // Получаем длину строки char lastChar = str[len - 1]; // Получаем последний символ строки // Проходим по всей строке for (int i = 0; i < len; i++) { // Если текущий символ совпадает с последним символом if (str[i] == lastChar) { // Записываем номер символа (индекс + 1) в выходной файл, добавляя пробел fprintf(outputFile, "%d ", i + 1); } } fclose(inputFile); // Закрываем входной файл fclose(outputFile); // Закрываем выходной файл return 0; }
1) This code reads a string from "input.txt", finds all positions (1-based) where the last character of the string appears, and writes those positions to "output.txt".

2) Hint 1: Consider what happens if the input file is empty or contains only a newline character — check if the string length is valid before accessing `str[len - 1]`.  
Hint 2: Remember that `fgets` includes the newline character in the buffer if there's space, so the newline removal logic is important for correct character comparison.