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

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

Восстановить пароль Регистрация
 
kirya
-9 / 2 / 0
Регистрация: 01.06.2012
Сообщений: 87
25.06.2012, 10:39     Не считывает с файла #1
Друзья, вообщем написал программку, в которой вводятся шесть строк, в каждой по одному слову, затем вводишь символ и начинается сравнение: если символ этот совпадает с первой буквой какого либо слова в строке, то прога выводит эту самую строку.
Только вот в чем дело, надо файл создать в проекте в папке самой, я создал, 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++
C++ не считывает с текстового файла
Не считывает с файла C++
не считывает текст из файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
 Аватар для darkknight2008
61 / 61 / 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
 Аватар для darkknight2008
61 / 61 / 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
 Аватар для darkknight2008
61 / 61 / 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++
Написать программу которая считывает считывает текст из файла и записывает в другой слова состоящие не менее чем из 7 букв C++
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     Не считывает с файла
Ответ Создать тему
Опции темы

Текущее время: 23:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru