Вывести из файла на экран только содержащие двузначные числа строки - C (СИ)
Формулировка задачи:
Дорогие, не откажите в помощи!!
Вот есть задание "написать программу, которая считывает текст из файла и выводит на экран только строки, содержащие двузначные числа"
Сам попытался сделать, вот что написал
Не судите строго, не так давно учусь программированию! Пока не все получается!
Помогите пожалуйста исправить ошибки в коде, чтобы выводило правильно) А то у меня запускается процесс компиляции, а строки не выводит
Заранее спасибо!!
#include <stdio.h> int main() { FILE * file = fopen( "input.txt", "rt" ); if ( file == 0 ) { printf( "Can't find and open input file\n" ); return 1; } while ( ! feof( file ) ) { char line[ 256 ]; if ( fgets( line, 255, file ) != 0 ) { int n; if ( sscanf( line, "%i", &n ) == 1 ) { if ( n >= 10 && n <= 99 ) { printf( "%s", line ); } } } } fclose( file ); }
Решение задачи: «Вывести из файла на экран только содержащие двузначные числа строки»
textual
Листинг программы
#include <ctype.h> //isdigit #include <stdio.h> //i/o #include <string.h> //ÔóГ*êöèÿ ïðîâåðÿåò ñîæåðæèò ëè ñòðîêГ* õîòÿ ГЎГ» 1-Г*Г® äâóõçГ*Г*Г·Г*îå ÷èñëî int isStrHas2digNumbers(char * str); int main() { //Õîðîøî áóäåì ïîëГ*ГЈГ*ГІГј, Г·ГІГ® ñòðîêè Гў ГґГ*éëå êîðî÷å 256 ñèìâîëîâ char line[256] = {0};//Г·ГІГ® Гў îáùåì ñëó÷Г*ГҐ ñîâñåì Г*ГҐ ГІГ*ГЄ int nLines = 0;//Áóäåò ñîæåðæГ*ГІГј ñóììГ*Г°Г*îå ÷èñëî ñòðîê Г± äâóõçГ*Г*Г·Г*ûìè FILE * file = fopen( "input.txt", "rt" ); if ( file == 0) printf( "Can't find and open input file\n" ); else { while ( ! feof( file ) ) { if ( fgets( line, 255, file ) ) if ( isStrHas2digNumbers(line)) { nLines = nLines + 1;//óâåëè÷èâГ*ГҐГ¬ Г§Г*Г*Г·ГҐГ*ГЁГҐ Г±Г·ВёГІГ·ГЁГЄГ* printf("%s\n", line);//ГЇГҐГ·Г*ГІГ*ГҐГ¬ ñòðîêó } } fclose(file); } printf("input.txt contains from %d lines with 2digit values\n", nLines); getchar(); return 0; } int isStrHas2digNumbers(char * str) { int i; int val; char delim[128 - (48 + 9)] = {0};//ГЌГ*ГёГ* ñòðîêГ* Г± ГЇГҐГ·Г*ГІГ*åìûìè ñèìâîëГ*ìè ASCII for(i = 0; i < 128 - (48 + 9); i++) delim[i] = i + (48 + 9); char * tok = NULL; char buf[256] = {0};//ГЃГіГґГґГҐГ° äëÿ ñòðîêè int isContain = 0;//ÔëГ*ГЈ ГіГЄГ*çûâГ*ГѕГ№ГЁГ© Г·ГІГ® Гў ñòðîêå ГҐГ±ГІГј äâóõçГ*Г*Г·Г*ûå if(str != NULL) { strcpy(buf, str); for(tok = strtok(buf,delim); tok != NULL && !isContain; tok = strtok(NULL,delim)) { if(sscanf(tok,"%d", &val))//Âñòðåòèëè öèôðó if(9 < val && val < 100) isContain = 1; } } return isContain; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д