Считать текст из файла и вывести строки, которые содержат двузначные числа - C (СИ)

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

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

Помогите кто-нибудь с программой. Вроде все работает, только кроме двузначных выводит и трехзначные и тд... Как это исправить???
#include "stdafx.h"
#include <string.h>
#include <stdio.h>
#include <ctype.h>

void Two(char* str)
{
    FILE* f;
    char word [256];
    f = fopen(str, "r"); 
    if(f == NULL) printf("File not found");
    while(!feof(f))
    {
        fscanf(f, "%s", word);
        if(strlen(word) >= 2)
        {
            for(unsigned int i = 0; i < strlen(word); i++) 
            {               
                if(isdigit(word[i]) && isdigit(word[i+1]))
                    printf("%s\n", word);
            }
 
        }
    }
}

int main()
{
    Two("text.txt");
    return 0;
}

Решение задачи: «Считать текст из файла и вывести строки, которые содержат двузначные числа»

textual
Листинг программы
#include <string.h>
#include <stdio.h>
#include <ctype.h>
 
 
void Two(char* str)
{
    FILE* f;
    char word [256];
    size_t i, len;
    f = fopen(str, "r"); 
    if(f == NULL) printf("File not found");
    while(!feof(f) && fscanf(f, "%s", word))
    {
        len = strlen(word);
        for(i = 0; len > 1 && i < len - 2; i++)
            if (isdigit(word[i]) && isdigit(word[i+1]) && !isdigit(word[i+2]))
                printf("%s\n", word);
        if (len >= 2 && isdigit(word[len-2]) && isdigit(word[len-1]) && 
            (len == 2 ? 1 : !isdigit(word[len-3])))
            printf("%s\n", word); 
    }
    fclose(f);
}
 
 
int main(void)
{
    Two("input.txt");
    return 0;
}

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

В этом коде используется функция Two, которая принимает в качестве аргумента строку, содержащую путь к файлу.

  1. Сначала открывается файл для чтения с помощью функции fopen.
  2. Если файл не может быть открыт, выводится сообщение об ошибке.
  3. Затем используется цикл while, который продолжается до тех пор, пока не достигнут конец файла и не прочитана строка.
  4. Внутри цикла используется еще один цикл for, который ищет двузначные числа в строке.
  5. Если два символа являются цифрами, а следующий за ними символ не является цифрой, то это двузначное число, и строка выводится на экран.
  6. Если в строке есть две цифры в конце, а третий символ не является цифрой, то это также двузначное число, и строка выводится на экран.
  7. В конце функция fclose закрывает файл.
  8. В функции main вызывается функция Two с аргументом input.txt.
  9. Возвращается 0, чтобы указать, что программа успешно завершилась.

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


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

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

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