Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 09.03.2011
Сообщений: 6

Проверка при чтении из файла

09.03.2011, 22:06. Показов 2127. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!
В своей программе на одном из этапов я построчно считываю целые числа из файла *.txt.
Мне нужно чтобы в файле были только целые числа, а в случае "крякозабр" (типа "-1-1", "gdh" , "234Dcm23" и т.д.) и переполнения int, программа выдавала соответствующее сообщение.

Листинг:
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <iostream> 
#include <tchar.h>
#include <stdio.h>
#include <io.h>
#include <stdlib.h>
#include <fstream>
#include <string>
#include <cctype> 
#include <conio.h>
using namespace std;
 
#define SIZE 50
 
int binsearch(int x, int a[], int a2[],int n)
{
    int first = 0; // Первый элемент в массиве
    int last = n; // Последний элемент в массиве
    int mid;
 
    while ( first < last ) {
        mid = ( first + last ) / 2;
        if ( x <= a[mid] ) {
            last = mid;
        } else {
            first = mid + 1;
        }
    }
 
    if ( a[last] == x ) {
        for (int t=0; t<n;t++)
        {
            if (a[last] == a2[t]) printf("\nThe number %d is located in an array in number position: %d \n", x,t+1);
        }
        
    } else {
        printf("\nThe number %d is not located in an array\n", x);
    }
 
    return 0;
}
 
 
int main(){
    
    //const int LEN=80;
    char BUF[50];
    int mass[SIZE], mass2[SIZE], k=0, key;
    
    ifstream in_file ("e:\\test.txt", ios::in);
 
    //проверка связанная с открытием файла
    if (! in_file){ 
        cerr<<"Error input file"<<endl;
        exit(1);
    }
    
    // Считываем данные из файла в массив
    while (in_file)
    { in_file.getline(BUF,sizeof(BUF));
        
        mass2[k]= atoi( BUF); // нужен для того чтобы выдавать позицию в файле
        mass[k]= atoi( BUF);
 
        k++;
    }
    ////////////////////////////////////////////////////////////
    
    cout << "Please enter key for seach: "<< endl;
    cin >> key; // считываем со строки в int
    char key_char = (char)cin.get(); // считываем со строки в char
    
    // преобразование инт в чар*, потом в стринг и нахождение колличества элементов в строке для переполнения
    char * szString = new char[17];
    itoa(key,szString,10); // int -> char
    string str = (string)szString;
    if ((int)key_char != 10){cout << "a is not number! Again!" << endl; cout << "Press ENTER to finish work" << endl; getch(); return 0;}// если аски последний равен 10(аски перехода на новыю строку), то все круто
    if (str.length() ==45) {cout<< "Program uses only unsigned int" <<endl; cout << "Press ENTER to finish work" << endl; getch(); return 0;}
    if (str.length() >=10) {cout<< "Overflowing" <<endl; cout << "Press ENTER to finish work" << endl; getch(); return 0;}
   
 //пузырьковая сортировка по возрастанию
    for (int i = 1; i<k-1; i++){
        int tmp = 0;
        for (int j=0; j<k-2; j++)
            if (mass[j]>mass[j+1]) {
                tmp = mass[j];
                mass[j] = mass[j+1];
                mass[j+1] = tmp;        
                }
    }
 
    // бинарынй поиск ключа 'key' в массиве mass[] 
    binsearch(key,mass,mass2,k-1);
    getch();
 
    return 0;
}
Сам файл примерно следующего содержания:
4h46
5
45
16
90
1
65
-19
3
1
85
888
34
56
32
1
3
90
574
5555

P.S. Это моя первая программа на С++.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.03.2011, 22:06
Ответы с готовыми решениями:

"Нарушение прав доступа при чтении по адресу" при чтении структур из бинарного файла
Пытаюсь разобраться со структурами в бинарных файлах. Допустим, есть массив структур. Записываю его в бинарный файл (закомментированный...

Можно ли при чтении из файла элементов в список удалять эти элементы(без очистки файла)
Допустим,есть файл,в нём записаны 3 обьекта(отличаются одним параметром,по которому как раз и достаются обьекты из файла).Пусть второй...

Ошибка при вызове метода класса, при чтении из файла
добрый день, пытаюсь считать данные из и запихнуть их в список в файле у меня вот такие данные a01 b10 А и Б надо запихнуть в...

2
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
09.03.2011, 22:18
как вариант:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
/*...*/
FILE * f;
char buf[32], * tail;
long val;
/* открыть файл, проверить, что открылся */
while ( fscanf(f, "%s", buf) == 1 ){
  errno = 0;
  val = strtol(buf, &tail, 10);
  if ( errno || *tail )
    /* ошибка */
  /* val содержит прочитанное число */
}
/*...*/
1
0 / 0 / 0
Регистрация: 09.03.2011
Сообщений: 6
09.03.2011, 22:43  [ТС]
Большое спасибо, всё работает!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.03.2011, 22:43
Помогаю со студенческими работами здесь

Как при чтении файла проверить достигнут ли конец файла?
Как при чтении файла проверить достигнут ли конец файла? Dim Red As IO.BinaryReader Red = New...

fread выводит грязь при при чтении из файла
задача заключалась в том, чтобы записать содержимое файла в массив. проблема в том, что при выводе массива видно, что в конце присутствуют...

Ошибка при чтении файла
Добрый вечер. При чтении файла Unhandled Exception: System.OverflowException: Значение было недопустимо малым или недопустимо...

Кракозябры при чтении из файла
При чтении из файла .txt и вывода на консоль русские буквы отображаются как знаки вопроса. Как это исправить? Читаю с помощью...

Ошибка при чтении из файла
Ошибка при чтении записей из файла. Кто знает почему?? Все перепробовал:wall:


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru