Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.61
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
#1

Как считать информацию из файла, если в конце стоит пробел? - C++

03.12.2008, 01:28. Просмотров 2263. Ответов 6
Метки нет (Все метки)

У меня при считывании из файла в массив, если в конце файла стоит пробел, то копируется ещё один символ (-842…..). Как определить, что в конце стоит пробел и дальше ничего не считывать?

C
1
2
3
4
5
for (i = 0;!feof (fin); i++)
{
    fscanf (fin, "%d", &mas[i]);
    n++;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2008, 01:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как считать информацию из файла, если в конце стоит пробел? (C++):

Как считать информацию с файла - C++
Помогите пожалуйста разобраться с файлами. При считывании из файла в методе void Users::LoadFile() (Файл Users.cpp) попадаю в бесконечный...

Как считать информацию с текстового файла? - C++
Нужна помощь! Мне необходимо создать пользовательскую функцию, которая будет считывать информацию с текстового файла.

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

Считать 2 слова из файла через пробел и сравнить их со словом No или Yes - C++
В файле input.txt записаны два слова через пробел. "Yes" и "No". Нужно считать их из этого файла, затем если s1, первое слово "Yes", и...

Когда считываю информацию с файла, то выводит в конце непонятные символы - C++
#include "stdafx.h" #include <iostream> #include <conio.h> #include <string.h> #include <fstream> using namespace std; ...

Удалить ненужную информацию в конце файла, не создавая другой файл - C++
Молжа ли удалить конец файла(удаление ненужной информации в конце файла)? не создавая другой файл. или как нибуть урезать его?

6
=TrappeR=
3 / 3 / 1
Регистрация: 02.12.2008
Сообщений: 11
03.12.2008, 16:06 #2
Для этого лучше использовать цикл do while, в котором считываем посимвольно из потока в буфер и формируем число. Посмотри код, там все довольно понятно. Если что не ясно, спрашивай.
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 <conio.h>
#include <ctype.h>
int main( )
{
    FILE *fin;
    if ((fin = fopen("file.txt", "a+")) == NULL) {
        perror("file.txt");
        getch( );
        return 1;
    }
 
    int mas[100], i, digit;
    char buf;
    i = digit = 0;
    do {
        buf = fgetc(fin);
        if (isdigit(buf)) {
            /* формирование чисел */
            if (digit != 0)
                digit *= 10;
            digit += (int(buf) - int('0'));
        } else {  /* любой символ кроме числа */
            /* сохранение числа и вывод на экран */
            if (digit != 0) {
                mas[i++] = digit;
                printf("%d ", digit);
                digit = 0;
            }
        }
    } while (buf != EOF);
 
    fclose(fin);
    getch( );
    return 0;
}
0
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
05.12.2008, 21:12  [ТС] #3
Спасибо!
Но я ещё не знаю библиотеку <ctype.h> и функции, находящиеся в ней.
Неужели нельзя реализовать это со стандартной библиотекой?
0
=TrappeR=
3 / 3 / 1
Регистрация: 02.12.2008
Сообщений: 11
09.12.2008, 07:10 #4
Спасибо!
Но я ещё не знаю библиотеку <ctype.h> и функции, находящиеся в ней.
Неужели нельзя реализовать это со стандартной библиотекой?
Файл ctype.h содержит функции и макросы проверки, и преобразования символов. В данном проекте необходим для функции isdigit(buf), возвращающей не 0, если buf - цифра.
Если ты под стандартной библиотекой имеешь в виду stdlib.h, то она служит для работы со строками и памятью. На будущее: если сомневаешься в какой-либо библиотеке, комментирую ее и смотри как отреагирует компилятор.
0
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
12.12.2008, 02:11  [ТС] #5
Цитата Сообщение от =TrappeR= Посмотреть сообщение
Файл ctype.h содержит функции и макросы проверки, и преобразования символов. В данном проекте необходим для функции isdigit(buf), возвращающей не 0, если buf - цифра.
Если ты под стандартной библиотекой имеешь в виду stdlib.h, то она служит для работы со строками и памятью. На будущее: если сомневаешься в какой-либо библиотеке, комментирую ее и смотри как отреагирует компилятор.
Я имел ввиду без библиотеки stdlib.h.
Здесь, впринципе, учитывая что в качестве пробела пишется число -858993460, можно сделать проверку последнего элемента массива на это число и удалить его из массива если оно есть, но это не очень правильно - ведь если в файле в конце стоит это само число и пробела нет, то оно удалится.
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
12.12.2008, 07:18 #6
обрати внимание съедает символы пустого пространства после каждого ввода если они есть
C
1
2
    for (i = 0; fscanf(fin, "%d ", &mas[i]) == 1; n++, i++)
        ;
0
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
14.12.2008, 03:57  [ТС] #7
Спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2008, 03:57
Привет! Вот еще темы с ответами:

Как считать матрицу 3*3 из файла если он там задан неправильно - C++
как считать матрицу 3*3 из файла если он там задан неправильно например в файле 4 5 6 7 8 1 2 3 4 9 8 7 а должно считать 4 5...

Как считать матрицы из файла, если их несколько и они разного размера? - C++
Здравствуйте! Как считать матрицы из файла, если их несколько и они разного размера? На экран нужно выводить в виде матрицы. Сделать...

Не получается считать из файла информацию - C++
У меня есть текстовый файл. Мне нужно считать в нем строчки, такого типа: qwert 12345 asdfghjk 213213 tgyhh 39482 Имена...

Считать информацию из с файла массив посимвольно - C++
с++ как достать инфу с файла, и забить в массив по-символьно?


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
14.12.2008, 03:57
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru