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

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

Войти
Регистрация
Восстановить пароль
 
kirya
-9 / 2 / 0
Регистрация: 01.06.2012
Сообщений: 87
#1

Не считывает с файла - C++

25.06.2012, 10:39. Просмотров 663. Ответов 10
Метки нет (Все метки)

Друзья, вообщем написал программку, в которой вводятся шесть строк, в каждой по одному слову, затем вводишь символ и начинается сравнение: если символ этот совпадает с первой буквой какого либо слова в строке, то прога выводит эту самую строку.
Только вот в чем дело, надо файл создать в проекте в папке самой, я создал, t.txt, в нем ввел шесть строк в каждой по слову, так вот программа должна уже оотуда считывать а у меня ошибку выдает( ДОЛЖНО СЧИТЫВАТЬ СТРОКИ С ФАЙЛА, ВВОДИТЬ ИХ НЕ НАДО, В ФАЙЛЕ УЖЕ НАПЕЧАТАЛ!
вот код программы, кто знает, помогите)


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 "stdafx.h"
#include "conio.h"
#include "locale.h"
#include "string.h"
#define n 6
 
struct grep
{
    char string[15];
};
 
void main()
{
    struct grep b[6];
    char s;
    setlocale(LC_ALL, "rus");
    FILE *pc;
    pc=fopen("t.txt","r");
    printf("Введите символ: ");
    scanf("%s", &s);
    rewind(pc);
    while(!feof(pc))
    {
        for(int i=0; i<n; i++)
        {
            if(b[i].string[0]==s)
            {
                fwrite(&b[i],sizeof(struct grep),1,pc);
                printf("%d) %s \n", i+1, b[i].string);
            }
        }
    fclose(pc);
    break;
}
_getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2012, 10:39     Не считывает с файла
Посмотрите здесь:

Не считывает с файла - C++
Приношу извинения. Уже разобрался)

Неправильно считывает с файла - C++
Не могу понять в чем ошибка??? функция eof должна считывать с файла до пробела?? Т.е если в файле данные расположены так: а b ...

Считывает текст из файла! - C++
Написал программу которая считывает текст из файла и выводит его на экран меняя местами два соседних слова. Но почему то при запуске...

не считывает текст из файла - C++
Добрый вечер всем. вот собсна код, который не хочет работать из файла. #include &quot;iostream&quot; #include &quot;time.h&quot; #include &quot;conio.h&quot; ...

Не считывает структуру с файла - C++
Добрый день. Мне необходимо считать данные структуры с файла и записать их в другой файл. Почему-то он отказывается это делать. ...

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

Не считывает данные из файла - C++
Дано задание (полностью писать не буду не имеет смысла) &quot;... также создать функции ввода и вывода массива из файла SaveArray и LoadArray.&quot;...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
koma3
0 / 0 / 0
Регистрация: 24.09.2011
Сообщений: 66
25.06.2012, 11:05     Не считывает с файла #2
Укажи лучше полный путь к файлу.
kirya
-9 / 2 / 0
Регистрация: 01.06.2012
Сообщений: 87
25.06.2012, 11:16  [ТС]     Не считывает с файла #3
в каком месте путь указать?
koma3
0 / 0 / 0
Регистрация: 24.09.2011
Сообщений: 66
25.06.2012, 11:40     Не считывает с файла #4
ты пишеш
C
1
pc=fopen("t.txt","r");
попробуй вместо "t.txt" указать полный путь к t.txt, например "D:\\projects\\my_project\\t.txt" (короче путь к проэкту)
kirya
-9 / 2 / 0
Регистрация: 01.06.2012
Сообщений: 87
25.06.2012, 11:43  [ТС]     Не считывает с файла #5
пробовал, толку нет
darkknight2008
62 / 62 / 6
Регистрация: 16.10.2011
Сообщений: 200
25.06.2012, 12:08     Не считывает с файла #6
Как и сказали выше, лучше для понимания использовать полный путь к файлу. Проверь по шагам что возвращает функция fopen - открывает она файл или нет.(Понятное дело, если файла по пути нема, то он и не откроется) Что за ошибку выдает? Чтобы считывать из файла достаточно спользовать функцию fscanf, либо можно ничего не менять, а вместо вызова fopen поставить строку freopen(путь к файлу, "r", stdin);. Тогда поток ввода будет переброшен на твой файл, и из файла можно будет читать с помощью scanf.

Добавлено через 2 минуты
Функцию fwrite - используют для считывания из бинарных файлов, так что для считывания текста ее использование не желательно. Лучше использовать fscanf, ну или любые похожие функции.
kirya
-9 / 2 / 0
Регистрация: 01.06.2012
Сообщений: 87
25.06.2012, 12:11  [ТС]     Не считывает с файла #7
Я вот также указал полный путь к файлу, и сделал freopen, а программа при запуске сразу ошибку выдает
Debug Assertion Failed, потом путь указан какой то, потом Expression: (stream != NULL) 44 line

вот прогу как исправил:

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 "stdafx.h"
#include "conio.h"
#include "locale.h"
#include "string.h"
#define n 6
 
struct grep
{
    char string[15];
};
 
void main()
{
    struct grep b[6];
    char s;
    setlocale(LC_ALL, "rus");
    FILE *pc;
    pc=freopen("I:\Grep\Debug\t.txt","r", stdin);
    printf("Введите символ: ");
    scanf("%s", &s);
    while(!feof(pc))
    {
        for(int i=0; i<n; i++)
        {
            fread(&b[i],sizeof(struct grep),1,pc);
            if(b[i].string[0]==s)
            {
                fwrite(&b[i],sizeof(struct grep),1,pc);
                printf("%d) %s \n", i+1, b[i].string);
            }
        }
    fclose(pc);
    _getch();
    }
 
}
darkknight2008
62 / 62 / 6
Регистрация: 16.10.2011
Сообщений: 200
25.06.2012, 12:14     Не считывает с файла #8
Попробуй заменить твой путь "I:\Grep\Debug\t.txt" на "I:\\Grep\\Debug\\t.txt". Обратный слешь используется для управляющих символов(типа \n \r и т.д.)Поэтому, чтобы задать просто символ обратного слеша, то приходится писать \\.
kirya
-9 / 2 / 0
Регистрация: 01.06.2012
Сообщений: 87
25.06.2012, 12:18  [ТС]     Не считывает с файла #9
точно такую же ошибку выдает, и постоянно ругается на какую то 44 линию, хотя у меня по-моему нет столько строчек в программе, может программка неправильно конец файла находит?
darkknight2008
62 / 62 / 6
Регистрация: 16.10.2011
Сообщений: 200
25.06.2012, 12:23     Не считывает с файла #10
Кстати, я тебя походу обманул. Не стоит использовать freopen, ведь он перенаправляет ВЕСЬ поток ввода. Т.е. когда ты запросишь ввести символ, то он этот символ будет читать из файла. Поэтому, лучше оставить fopen, не забудь про проверку открытия файла Типа:
C
1
2
3
4
5
if (pc == NULL) {
  printf("Файл не найден!\n");
  system("pause");
  return;
}
Добавлено через 5 минут
А почему ты расчитываешь, что все заработает, если исправить всего одну строчку сотткрытием файла? Кстати, я тока заметил - почему ты используешь fwrite?? Зачем тебе писать в файл, если ты из него считываешь??? Тем более ты открыл файл только для чтения, понятное дело, если ты попытаешься записать в файл, то выдастся ошибка.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2012, 12:24     Не считывает с файла
Еще ссылки по теме:

Неверно считывает строку из файла - C++
Задание состоит в том, чтобы копировать содержимое одного файла в другой. Я написал следующий код: int count = 0; //количество...

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

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

Неправильно считывает 2 последних значения с файла - C++
Здравия! Завтра дедлайн,а тут внезапно такая ошибка. Отказывается читать 2 последних значения с файла ( это черновой вариант функции для...

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


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

Или воспользуйтесь поиском по форуму:
kirya
-9 / 2 / 0
Регистрация: 01.06.2012
Сообщений: 87
25.06.2012, 12:24  [ТС]     Не считывает с файла #11
а это мне надо поставить перед циклом while эту проверку, типа если файл пуст, то файл не найден, ИНАЧЕ пока не конец файла, считываем все, да???
а вот system("pause") - это какую библиотеку надо, а можно exit(1) использовать?
Yandex
Объявления
25.06.2012, 12:24     Не считывает с файла
Ответ Создать тему
Опции темы

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