Вывод каждого 4го символа из файла - C (СИ)
Формулировка задачи:
Добрый день! Не могу решить задачу, помогите пожалуйста.
Вывести на экран каждое четвертое число из заданного текстового файла.
Сколько в строке символов я научил программу считать, осталось сделать что бы программа понимала какой символ считается 4ым.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE* mf;
char str[1000];
int k = 0;
int i = 0;
mf=fopen("chisla.txt", "r");
while(!(feof(mf)))
{
fgets(str, 1000, mf);
printf("%s", str);
i = strlen(str); //Подсчет символов в строке
printf("\nсимволов: " "%d\n", i);
}
fclose(mf);
return 0;
}Решение задачи: «Вывод каждого 4го символа из файла»
textual
Листинг программы
#include <stdio.h>
#include <locale.h>
int main()
{
setlocale( LC_ALL,"Russian" );
FILE* mf;
char str[1000];
int k = 0;
int i = 0;
int j = 0;
mf=fopen("chisla.txt", "r");
while(!(feof(mf)))
{
fgets(str, 1000, mf);
printf("%s", str);
i = strlen(str); //Подсчет символов в строке
printf("\n Всего символов: " "%d\n", i);
for(k = 0; k < i; k++)
{
if(k>0){
if(str[k]==' '){//если пробел, считаем что было число.
j++;
}
if((j+1)%4==0)//следующее число четвертое или его позиция кратна четырем.
{
while(str[k]){
printf("%c", str[k]);
k++;
if(str[k]==' ')//если нашли пробел в конце числа с номером
{//кратным четырем выходим из цикла и увеличиваем счетчик чисел
j++;
break;
}
}
}
}
}
}
fclose(mf);
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Устанавливается русская локаль для корректного отображения кириллических символов.
- Открывается файл
chisla.txtдля чтения. - В цикле while считывается содержимое файла построчно с помощью функции fgets.
- Каждая строка выводится на экран с помощью функции printf.
- Для каждой строки подсчитывается количество символов с помощью функции strlen.
- Если количество символов больше 0, то ищется первый пробел в строке.
- Если пробел найден, то это значит, что текущее число уже закончилось, и начинается подсчет следующего числа.
- Если количество символов в строке кратно 4, то выводится текущее число.
- Число выводится до тех пор, пока не будет найден следующий пробел.
- После окончания чтения файла функция fclose закрывает файл.
- Возвращается 0, что означает успешное выполнение программы.