Подсчитать количество чисел в текстовом файле - 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, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д