Подсчитать количество чисел в текстовом файле - C (СИ) (71993)
Формулировка задачи:
Подсчитать кол-в чисел в текстовом файле
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include "logotip.c"
- #include <ctype.h>
- #include <string.h>
- #include <unistd.h>
- void time_stamp(FILE *f)
- {
- time_t t;
- t=time(NULL);
- fprintf(f,"=====%s=====\n",ctime(&t));
- }
- int main(int argc,char* argv[])
- {
- char a1,a2;
- char buffer[20],str_file[100];
- char mass[100],ch,word[100];
- char word_max[100];
- //const char ch[200],mass[100];
- int a,i,n1,b,count=0,state;
- int n;
- int j;
- FILE *filein,*fileout,*flog;
- logo();
- printf("Краткое изложение задачи:\n");
- printf("В текстовом файле найти самую длинную последовательность цифр\n");
- printf("Выполнил Рожкин Павел Александрович,ИВТ-12\n");
- sprintf(buffer,"%s.log",argv[0]);
- if((flog=fopen(buffer,"a"))==NULL)
- {
- puts("Ошибка открытия журнала");
- puts("Нажмите Enter");
- getchar();
- exit(0);
- }
- time_stamp(flog);
- fprintf(flog,"Программа %s приступила к работе",argv[0]);
- if(argc<2)
- {
- time_stamp(flog);
- fprintf(flog,"Ошибка,недостаточно аргументов командной строки,работы завершена\n");
- printf("Ошибка,используйте %s filename1 filename2\n",argv[0]);
- getchar();
- fclose(flog);
- exit(0);
- }
- if((filein=fopen(argv[1],"r"))==NULL)
- {
- time_stamp(flog);
- fprintf(flog,"Невозможно открыть входной файл %s ,программа завершила работу",argv[1]);
- getchar();
- fclose(flog);
- printf("Невозможно открыть файл %s,программа завершает работу\n",argv[1]);
- exit(0);
- }
- time_stamp(flog);
- fprintf(flog,"Файл %s открыт успешно",argv[1]);
- if((fileout=fopen(argv[2],"w"))==NULL)
- {
- time_stamp(flog);
- fprintf(flog,"Невозможно открыть файл %s ,программа завершила работу",argv[2]);
- printf("Невозможно открыть выходной файл %s,программа завершает работу\n",argv[2]);
- getchar();
- fclose(flog);
- exit(0);
- }
- time_stamp(flog);
- fprintf(flog,"Файл %s открыт успешно",argv[2]);
- //printf("asdasdsad\n");
- state=0;
- n=0;
- i=0;
- while(1)
- {
- ch=fgetc(filein);
- if(feof(filein)) break;
- if(state==0&&isdigit(ch))
- {
- word[count]=ch;
- state=1;
- count++;
- n++;
- //fprintf(fileout,"%c",ch);
- continue;
- }
- if(state==0&&!isdigit(ch))
- {
- //count=0;
- n=0;
- continue;
- }
- if(state==1&&!isdigit(ch))
- {
- word[count]='\0';
- state=0;
- if(i==0) {n1=n;i++;}
- if(n<n1&&n1!=n)
- {
- //printf("%c\n",word);
- //strcpy(word_max,word);
- }
- else
- {
- n1=n;
- strcpy(word_max,word);
- }
- count=0;
- n=0;
- }
- if(state==1&&isdigit(ch))
- {
- word[count]=ch;
- count++;
- //fprintf(fileout,"%c",ch);
- n++;
- continue;
- }
- }
- fprintf(fileout,"Наибольшая последовательность цифр(она состоит из %d цифр ):%s",n1,word_max);
- printf("Наибольшая последовательность цифр(она состоит из %d цифр )%s\n",n1,word_max);
- fclose(filein);
- fclose(fileout);
- fprintf(flog,"Операция выполнена успешно,%s и %s успешно закрыты,программа завершила работу",argv[1],argv[2]);
- printf("Операция выполнена успешно,%s и %s успешно закрыты,программа завершает работу\n",argv[1],argv[2]);
- getchar();
- fclose(flog);
- exit(0);
- }
Решение задачи: «Подсчитать количество чисел в текстовом файле»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
- int main(void)
- {
- FILE * file;
- int c=0;
- char sym;
- file = fopen("test.txt","r");
- if (file==NULL)
- {
- puts("File Erorr!");
- return 1;
- }
- fscanf(file,"%c",&sym);
- while(!feof(file))
- {
- if(isdigit(sym))
- {
- putchar(sym);
- c++;
- }
- fscanf(file,"%c",&sym);
- }
- fclose(file);
- printf("Count:%d!\n",c);
- return 0;
- }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и строками.
- Объявление переменных:
file
- указатель на файл;c
- счетчик количества чисел;sym
- символ, который считывается из файла.
- Открытие файла
test.txt
для чтения с помощью функцииfopen
. - Проверка, открылся ли файл, при отрицательном результате выводится сообщение об ошибке и возвращается 1.
- Считывание первого символа из файла с помощью функции
fscanf
. - Организация цикла по всем символам файла до достижения конца файла с помощью условия
while(!feof(file))
. - Проверка, является ли текущий символ числом с помощью функции
isdigit
. - Если символ является числом, то он выводится на экран с помощью функции
putchar
, а счетчикc
увеличивается на 1. - Считывание следующего символа из файла с помощью функции
fscanf
. - Закрытие файла с помощью функции
fclose
после окончания работы с ним. - Вывод сообщения с количеством найденных чисел с помощью функции
printf
, а затем возвращение 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д