Подсчитать количество чисел в текстовом файле - C (СИ) (71993)

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

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

Подсчитать кол-в чисел в текстовом файле
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include "logotip.c"
  5. #include <ctype.h>
  6. #include <string.h>
  7. #include <unistd.h>
  8. void time_stamp(FILE *f)
  9. {
  10. time_t t;
  11. t=time(NULL);
  12. fprintf(f,"=====%s=====\n",ctime(&t));
  13. }
  14.  
  15. int main(int argc,char* argv[])
  16. {
  17. char a1,a2;
  18. char buffer[20],str_file[100];
  19. char mass[100],ch,word[100];
  20. char word_max[100];
  21. //const char ch[200],mass[100];
  22. int a,i,n1,b,count=0,state;
  23. int n;
  24. int j;
  25. FILE *filein,*fileout,*flog;
  26.  
  27. logo();
  28. printf("Краткое изложение задачи:\n");
  29. printf("В текстовом файле найти самую длинную последовательность цифр\n");
  30. printf("Выполнил Рожкин Павел Александрович,ИВТ-12\n");
  31.  
  32. sprintf(buffer,"%s.log",argv[0]);
  33. if((flog=fopen(buffer,"a"))==NULL)
  34. {
  35. puts("Ошибка открытия журнала");
  36. puts("Нажмите Enter");
  37. getchar();
  38. exit(0);
  39. }
  40. time_stamp(flog);
  41. fprintf(flog,"Программа %s приступила к работе",argv[0]);
  42.  
  43. if(argc<2)
  44. {
  45. time_stamp(flog);
  46. fprintf(flog,"Ошибка,недостаточно аргументов командной строки,работы завершена\n");
  47. printf("Ошибка,используйте %s filename1 filename2\n",argv[0]);
  48. getchar();
  49. fclose(flog);
  50. exit(0);
  51. }
  52.  
  53. if((filein=fopen(argv[1],"r"))==NULL)
  54. {
  55. time_stamp(flog);
  56. fprintf(flog,"Невозможно открыть входной файл %s ,программа завершила работу",argv[1]);
  57. getchar();
  58. fclose(flog);
  59. printf("Невозможно открыть файл %s,программа завершает работу\n",argv[1]);
  60. exit(0);
  61. }
  62. time_stamp(flog);
  63. fprintf(flog,"Файл %s открыт успешно",argv[1]);
  64.  
  65. if((fileout=fopen(argv[2],"w"))==NULL)
  66. {
  67. time_stamp(flog);
  68. fprintf(flog,"Невозможно открыть файл %s ,программа завершила работу",argv[2]);
  69. printf("Невозможно открыть выходной файл %s,программа завершает работу\n",argv[2]);
  70. getchar();
  71. fclose(flog);
  72. exit(0);
  73. }
  74.  
  75. time_stamp(flog);
  76. fprintf(flog,"Файл %s открыт успешно",argv[2]);
  77.  
  78. //printf("asdasdsad\n");
  79. state=0;
  80. n=0;
  81. i=0;
  82. while(1)
  83. {
  84.  
  85. ch=fgetc(filein);
  86.  
  87. if(feof(filein)) break;
  88. if(state==0&&isdigit(ch))
  89. {
  90. word[count]=ch;
  91. state=1;
  92. count++;
  93. n++;
  94. //fprintf(fileout,"%c",ch);
  95. continue;
  96. }
  97.  
  98. if(state==0&&!isdigit(ch))
  99. {
  100. //count=0;
  101. n=0;
  102. continue;
  103. }
  104.  
  105. if(state==1&&!isdigit(ch))
  106. {
  107. word[count]='\0';
  108. state=0;
  109.  
  110. if(i==0) {n1=n;i++;}
  111.  
  112. if(n<n1&&n1!=n)
  113. {
  114. //printf("%c\n",word);
  115. //strcpy(word_max,word);
  116. }
  117. else
  118. {
  119. n1=n;
  120. strcpy(word_max,word);
  121. }
  122. count=0;
  123. n=0;
  124. }
  125.  
  126. if(state==1&&isdigit(ch))
  127. {
  128. word[count]=ch;
  129. count++;
  130. //fprintf(fileout,"%c",ch);
  131. n++;
  132. continue;
  133. }
  134.  
  135. }
  136.  
  137. fprintf(fileout,"Наибольшая последовательность цифр(она состоит из %d цифр ):%s",n1,word_max);
  138.  
  139. printf("Наибольшая последовательность цифр(она состоит из %d цифр )%s\n",n1,word_max);
  140.  
  141. fclose(filein);
  142. fclose(fileout);
  143. fprintf(flog,"Операция выполнена успешно,%s и %s успешно закрыты,программа завершила работу",argv[1],argv[2]);
  144. printf("Операция выполнена успешно,%s и %s успешно закрыты,программа завершает работу\n",argv[1],argv[2]);
  145. getchar();
  146. fclose(flog);
  147. exit(0);
  148.  
  149. }

Решение задачи: «Подсчитать количество чисел в текстовом файле»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4. int main(void)
  5. {
  6.     FILE * file;
  7.     int c=0;
  8.     char sym;
  9.     file = fopen("test.txt","r");
  10.     if (file==NULL)
  11.     {
  12.         puts("File Erorr!");
  13.         return 1;
  14.     }
  15.     fscanf(file,"%c",&sym);
  16.     while(!feof(file))
  17.     {
  18.         if(isdigit(sym))
  19.         {
  20.             putchar(sym);
  21.             c++;
  22.         }
  23.         fscanf(file,"%c",&sym);
  24.     }
  25.  
  26.     fclose(file);
  27.     printf("Count:%d!\n",c);
  28.     return 0;
  29. }

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

  1. Подключение необходимых библиотек для работы с файлами и строками.
  2. Объявление переменных:
    • file - указатель на файл;
    • c - счетчик количества чисел;
    • sym - символ, который считывается из файла.
  3. Открытие файла test.txt для чтения с помощью функции fopen.
  4. Проверка, открылся ли файл, при отрицательном результате выводится сообщение об ошибке и возвращается 1.
  5. Считывание первого символа из файла с помощью функции fscanf.
  6. Организация цикла по всем символам файла до достижения конца файла с помощью условия while(!feof(file)).
  7. Проверка, является ли текущий символ числом с помощью функции isdigit.
  8. Если символ является числом, то он выводится на экран с помощью функции putchar, а счетчик c увеличивается на 1.
  9. Считывание следующего символа из файла с помощью функции fscanf.
  10. Закрытие файла с помощью функции fclose после окончания работы с ним.
  11. Вывод сообщения с количеством найденных чисел с помощью функции printf, а затем возвращение 0, что означает успешный конец работы программы.

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


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

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

9   голосов , оценка 3.889 из 5

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

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

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