Как начать чтения файла со второй строки ? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет ! Может кто подсказать как начать чтения из файла в консоль со второй строки , дело в том что при генерации файла , первая строка и только лишь первая строка, время от времени выходит не верной ( не подходит под условие задачи) .Вот та часть кода что отвечает за вывод :
void OutputToConsloe()
{
FILE *InputFile = fopen("input.txt","r");
char str[10];
int line_counter;
for(line_counter=0;line_counter<16;line_counter++)
    {
    
    for(int i=0;i<10;i++)
    {
   
    str[i]=fgetc(InputFile);
    printf("%c",str[i]);        
            
    }
        }
    _getch();
}
Вот весь код целиком

Решение задачи: «Как начать чтения файла со второй строки ?»

textual
Листинг программы
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
 
 
void TextMassage();
 
void CreateFile();
 
void OutputToConsloe();
 
int M =15;//приростил на 1 из за бага ,в файл первой строкой записывается цепочка не подходящая к условию
 
char V [3]={'a','b','c'};
 
 
 
 
 
main()
{
 
TextMassage();
 
srand(time(NULL));
 
CreateFile();
 
OutputToConsloe();
}
 
 
void TextMassage()
{
 
setlocale(LC_ALL,"UA");
 
 
 
printf ("Задание:\nСоздать программу на языке  С  , которая будет продуцировать \nцепочки (слова) в трехсимвольном алфавите V={a,b,c} с записью их в файл, причем\nдлина L цепочек ограничена: L1 <= L <= L2 и для каждой цепочки, отобранной в\nфайл, должно выполняться условие  < A >.Общее количество цепочек вфайле  должно быть не более M.\nУсловие  < A >:\nСодержит не менее двух символов «с», начинается на символ «а», а символ «b»\nвстречается только по два (парами)\nL1 = 5\tL2 = 10\tM = 15\n");
 
 
}
 
void CreateFile()
{
FILE *InputFile = fopen("input.txt","w");
 
int counter ;//предел генерации слов
int counter_c ;//счетсчик количества с
int counter_db ;//cчетчик встреч b НЕ по два
int counter_b;//cчетчик встреч b 
//нужно два счетчика  b для исключения ситуаций "bbb"
bool a ;//истинность условия что а перове
 
for(counter =0,counter_c=0,counter_db=0,counter_b=0;counter<1024;counter++,a =false,counter_c=0,counter_db=0,counter_b=0)
{
 
int L =5 + rand()%6;
 
char  Line[L];
 
for(int i =0 ;i<L ;i++)
{
 
Line[i]=V[rand()%3];
    
 
}
if(Line[0]==V[0])
{
a=true;
 
 
for(int i =1 ;i<L ;i++)
{
 
if(Line[i]==V[2])
{
counter_c++;
}
    
 
 
 
if(Line[i]==V[1]&&Line[i-1]!=V[1]&&Line[i+1]!=V[1])
            {
 
counter_db++;//abbbaac  abcbb  abbbbabca
}
 
if(Line[i]==V[1])
            {
 
counter_b++;//abbbaac  abcbb  abbbbabca
}
 
 
}
 
 
}
if(a==true&&counter_c<3&&counter_db==0&&counter_b%2==0)
{
for(int i =0 ;i<L ;i++) 
if(i<L-1)
fprintf(InputFile,"%c",Line[i]);
else
fprintf(InputFile,"%c\n",Line[i]);  
}
 
}
fclose(InputFile);
}
void OutputToConsloe()
{
FILE *InputFile = fopen("input.txt","r");
char str[10];
int line_counter;
 
for(line_counter=0;line_counter<M;line_counter++)
    {
    
    
   
    fscanf(InputFile,"%s",str);
    if(line_counter>0)
    printf("%s\n",str);     
            
    
        }
    _getch();
}

Объяснение кода листинга программы

  1. Переменная M равна 15.
  2. В массиве V содержатся символы 'a', 'b' и 'c'.
  3. В функции main() вызываются функции TextMassage(), CreateFile() и OutputToConsloe().
  4. В функции TextMassage() выводится задание на экран.
  5. В функции CreateFile() создается файл input.txt для записи в него.
  6. В функции CreateFile() используется цикл для генерации 1024-символьных строк.
  7. В функции CreateFile() проверяется, что первая буква строки - 'a'.
  8. В функции CreateFile() проверяется, что в строке есть не более двух символов 'b'.
  9. В функции CreateFile() проверяется, что в строке есть не менее двух символов 'c'.
  10. В функции CreateFile() проверяется, что количество строк в файле не превышает 15.
  11. В функции CreateFile() выводится сгенерированная строка в файл, если она удовлетворяет всем условиям.
  12. В функции OutputToConsloe() открывается файл input.txt для чтения из него.
  13. В функции OutputToConsloe() используется цикл для чтения строк из файла.
  14. В функции OutputToConsloe() выводится каждая строка на экран.
  15. В конце программы вызывается функция _getch() для приостановки выполнения программы до нажатия клавиши.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы