Вывести из файла на экран только содержащие двузначные числа строки - 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;
}

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


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

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

8   голосов , оценка 3.75 из 5
Похожие ответы