• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите со строками в C++

  • Автор темы Автор темы photonr
  • Дата начала Дата начала

photonr

Ученик
Регистрация
11 Янв 2011
Сообщения
1
Реакции
0
Баллы
0
Помогите со строками в C++

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

Есть задача сделанная с немного другим условием, строки содержащие двузначные числа наоборот не выводит, и вроде немного неправильно, трехзначные тоже не выводит, вот она

#include <iostream>
#include <stdio.h>
#include <ctype.h>

using namespace std;

#define STRING_LEN 70 // длина строки

int main()
{
FILE *file;
char buff[STRING_LEN];
unsigned int n, i, dig;

file = fopen("file.txt", "r"); // открываем файл для чтения
if(!file) // если не открыли
return -1; // выходим
while(fgets(buff, STRING_LEN, file)) // читаем все строки до конца файла
{
dig = 0; // флаг наличия двузначного числа
n = strlen(buff); // получаем длину строки
if(n >= 2) // если длина строки больше или равно 2
{
for(i = 0; i != n; i++) // проходим по всей строке
{
// устанавливаем значение флага присутствия двузначного числа
dig = isdigit(buff) // текущий символ - цифра
& isdigit(buff[i+1]); // и следующий за ним символ - цифра
if(dig) // если есть двухзначное число
break; // выходим из цикла
}
if(!dig) // если двузначного числа в строке нет
cout << buff; // выводим строку в консоль
}
}
fclose(file); // закрываем файл
return 0; // выходим
}
 
Назад
Сверху