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

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

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

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

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <locale.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. #include <stdbool.h>
  6.  
  7.  
  8. void TextMassage();
  9.  
  10. void CreateFile();
  11.  
  12. void OutputToConsloe();
  13.  
  14. int M =15;//приростил на 1 из за бага ,в файл первой строкой записывается цепочка не подходящая к условию
  15.  
  16. char V [3]={'a','b','c'};
  17.  
  18.  
  19.  
  20.  
  21.  
  22. main()
  23. {
  24.  
  25. TextMassage();
  26.  
  27. srand(time(NULL));
  28.  
  29. CreateFile();
  30.  
  31. OutputToConsloe();
  32. }
  33.  
  34.  
  35. void TextMassage()
  36. {
  37.  
  38. setlocale(LC_ALL,"UA");
  39.  
  40.  
  41.  
  42. 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");
  43.  
  44.  
  45. }
  46.  
  47. void CreateFile()
  48. {
  49. FILE *InputFile = fopen("input.txt","w");
  50.  
  51. int counter ;//предел генерации слов
  52. int counter_c ;//счетсчик количества с
  53. int counter_db ;//cчетчик встреч b НЕ по два
  54. int counter_b;//cчетчик встреч b
  55. //нужно два счетчика  b для исключения ситуаций "bbb"
  56. bool a ;//истинность условия что а перове
  57.  
  58. 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)
  59. {
  60.  
  61. int L =5 + rand()%6;
  62.  
  63. char  Line[L];
  64.  
  65. for(int i =0 ;i<L ;i++)
  66. {
  67.  
  68. Line[i]=V[rand()%3];
  69.    
  70.  
  71. }
  72. if(Line[0]==V[0])
  73. {
  74. a=true;
  75.  
  76.  
  77. for(int i =1 ;i<L ;i++)
  78. {
  79.  
  80. if(Line[i]==V[2])
  81. {
  82. counter_c++;
  83. }
  84.    
  85.  
  86.  
  87.  
  88. if(Line[i]==V[1]&&Line[i-1]!=V[1]&&Line[i+1]!=V[1])
  89.             {
  90.  
  91. counter_db++;//abbbaac  abcbb  abbbbabca
  92. }
  93.  
  94. if(Line[i]==V[1])
  95.             {
  96.  
  97. counter_b++;//abbbaac  abcbb  abbbbabca
  98. }
  99.  
  100.  
  101. }
  102.  
  103.  
  104. }
  105. if(a==true&&counter_c<3&&counter_db==0&&counter_b%2==0)
  106. {
  107. for(int i =0 ;i<L ;i++)
  108. if(i<L-1)
  109. fprintf(InputFile,"%c",Line[i]);
  110. else
  111. fprintf(InputFile,"%c\n",Line[i]); 
  112. }
  113.  
  114. }
  115. fclose(InputFile);
  116. }
  117. void OutputToConsloe()
  118. {
  119. FILE *InputFile = fopen("input.txt","r");
  120. char str[10];
  121. int line_counter;
  122.  
  123. for(line_counter=0;line_counter<M;line_counter++)
  124.     {
  125.    
  126.    
  127.    
  128.     fscanf(InputFile,"%s",str);
  129.     if(line_counter>0)
  130.     printf("%s\n",str);    
  131.            
  132.    
  133.         }
  134.     _getch();
  135. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы