Как начать чтения файла со второй строки ? - 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();
- }
Объяснение кода листинга программы
- Переменная M равна 15.
- В массиве V содержатся символы 'a', 'b' и 'c'.
- В функции main() вызываются функции TextMassage(), CreateFile() и OutputToConsloe().
- В функции TextMassage() выводится задание на экран.
- В функции CreateFile() создается файл
input.txt
для записи в него. - В функции CreateFile() используется цикл для генерации 1024-символьных строк.
- В функции CreateFile() проверяется, что первая буква строки - 'a'.
- В функции CreateFile() проверяется, что в строке есть не более двух символов 'b'.
- В функции CreateFile() проверяется, что в строке есть не менее двух символов 'c'.
- В функции CreateFile() проверяется, что количество строк в файле не превышает 15.
- В функции CreateFile() выводится сгенерированная строка в файл, если она удовлетворяет всем условиям.
- В функции OutputToConsloe() открывается файл
input.txt
для чтения из него. - В функции OutputToConsloe() используется цикл для чтения строк из файла.
- В функции OutputToConsloe() выводится каждая строка на экран.
- В конце программы вызывается функция _getch() для приостановки выполнения программы до нажатия клавиши.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д