0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 19
1

Считать текст из файла и вывести на экран только строки, содержащие двузначное числа

02.12.2011, 17:18. Показов 2132. Ответов 10
Метки нет (Все метки)

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

Думал так, сначала сделаю что бы просто считал текст из файла, а потом вывод строк:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <conio.h>
 
int main() {
    clrscr();
 
    FILE *fileOpen;
    fileOpen = fopen("C:\\test1.txt","rt");
    if (!fileOpen) {
        printf("Error: Can't open file\n");
    }
 
    while ( (c = getc(fileOpen)) != EOF) 
        putchar(c);
    printf("%c",c);
 
    fclose(fileOpen);
    printf("\n");
    printf("\nPress any key");
 
    getch();
 
    return 0;
}
и вот после этого я остановился, что дальше делать не знаю. Как сделать эту проверку на двузначное число и как вывести только одну строку?
Буду благодарен за помощь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2011, 17:18
Ответы с готовыми решениями:

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

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

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

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

10
214 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
02.12.2011, 17:37 2
Цитата Сообщение от PCJakeD Посмотреть сообщение
и вот после этого я остановился, что дальше делать не знаю. Как сделать эту проверку на двузначное число и как вывести только одну строку?
знаете что у вас плохо ,то что надо было fgets считать весь файл в char*
а уже в этой строке сравнивать числа по их коду
то есть подошел код поставили переменную bool в один,ещё раз подошел(проверили следующий символ он должен быть пробел) вывели число или не вывели ,bool обнулили
0
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 19
02.12.2011, 18:05  [ТС] 3
Цитата Сообщение от Van111 Посмотреть сообщение
знаете что у вас плохо ,то что надо было fgets считать весь файл в char*
Если можно, напишите маленький пример от которого я смогу оттолкнутся.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
02.12.2011, 18:23 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Вот простой пример
Считывает из файла, а потом выводим
C
1
2
3
4
5
6
7
8
9
10
11
12
void fun (FILE * in_file)
{
        char s[1024];
 
        while ( ! feof ( A ) ) 
        {
        fgets (s,1024,A);
                printf ("\n%s", s);
            
        }
 
}
0
214 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
02.12.2011, 18:29 5
Цитата Сообщение от PCJakeD Посмотреть сообщение
Если можно, напишите маленький пример от которого я смогу оттолкнутся.
не обижайтесь что с ошибками
C++
1
2
3
4
5
6
7
8
char *text=new char[10000];
FILE *F=fopen(...,...);
int marker=0,q;
while(eof(F))
{
q=fgets(F,&text[marker]);
marker+=q;
}
это мы текст в строку забили
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11896 / 7268 / 1721
Регистрация: 25.07.2009
Сообщений: 13,311
02.12.2011, 18:34 6
Лучший ответ Сообщение было отмечено как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <string.h>
#include <ctype.h>
/*...*/
FILE * f;
char buf[BUFSIZ], * p;
/* open file... */
while ( fgets(buf, BUFSIZ, f) )
    if ( ( p = strpbrk(buf, "0123456789") ) && isdigit(*(p+1)) && ! isdigit(*(p+2)) )
        printf("%s", buf);
/*...*/
3
Эксперт С++
5038 / 2617 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
02.12.2011, 18:39 7
Цитата Сообщение от Van111 Посмотреть сообщение
надо было fgets считать весь файл в char*
А если он 2Гб весит?
0
214 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
02.12.2011, 18:51 8
Цитата Сообщение от fasked Посмотреть сообщение
А если он 2Гб весит?
тогда другое дело
сначала надо получить размер файла а потом писать в строку ,да в любом случае можно кусками считывать и искать нужную информацию
1
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 19
03.12.2011, 14:14  [ТС] 9
Всем спс =)
Что бы вопрос был решен выложу код программы который написал и мб кому пригодится.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
 
int main() {
    clrscr();
 
    FILE *fileOpen;
    fileOpen = fopen("C:\\test1.txt","rt");
    if (!fileOpen) {
        printf("Error: Can't open file\n");
    }
 
    fseek(fileOpen,0L,SEEK_END);
 
    long fileLength = ftell(fileOpen);
    char *fileBuf = new char[fileLength];
    char *p;
 
    fseek(fileOpen,0L,SEEK_SET);
 
    while (fgets(fileBuf,fileLength,fileOpen)) {
        if ((p = strpbrk(fileBuf,"0123456789")) && isdigit(*(p+1)) && !isdigit(*(p+2)))
            printf("%s",fileBuf);
    }
 
    fclose(fileOpen);
 
    printf("\n");
    printf("\nPress any key");
 
    getch();
 
    return 0;
}
P.S. если кто то увидит недочет прошу сообщить) Но у меня работает нормально.
0
Эксперт С++
5038 / 2617 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
03.12.2011, 15:59 10
Цитата Сообщение от PCJakeD Посмотреть сообщение
если кто то увидит недочет прошу сообщить
Вижу new на 18 строке, но нигде не вижу delete.
0
214 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
03.12.2011, 16:15 11
Цитата Сообщение от fasked Посмотреть сообщение
Вижу new на 18 строке, но нигде не вижу delete.
хм а разве new выделяют память в с. помоему тут нужна функции семейства malloc
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2011, 16:15
Помогаю со студенческими работами здесь

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

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

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru