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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Dady
2 / 2 / 0
Регистрация: 20.03.2012
Сообщений: 53
#1

Работа с текстом, функции fopen и fclose - C++

24.06.2012, 16:03. Просмотров 1290. Ответов 13
Метки нет (Все метки)

Друзья, помогите! Не могу понять в чём тут дело. я убрал поток и начал использовать функции fopen и fclose. Но при компиляции программа вылетает.

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
#include "stdafx.h" 
#include <iostream> 
#include <fstream> 
using namespace std; 
int main() 
{   setlocale(LC_ALL,"Russian"); 
    //int x;
   // ifstream infile; // входной поток
   // infile.open("Text.txt");  // открываем файл   
    char s[256];
    cin>>s;
    FILE *Text;
        if((Text=fopen(s, "rw"))==NULL)
            cout<< "no";
        size_t const n=(sizeof(Text));
    char buffer[n]; 
    char str[10]; // вводим последовательность символов    
    cout << "Введите последовательность символов ( вводим на английском ) "; 
    cin >> str; 
        //while(!infile.eof()) // считываем до конца файла 
    while(buffer[n]=fgetc(Text)!=EOF)
        { 
            //infile >> buffer; // считываем в буфер 
            if(strstr(buffer,str) != NULL)  // strstr возвращает указатель
            {
              cout << "Совпадение обнаружено " << str << endl; // совпадение обнаружено выходим из цикла                                
            } else
            { cout << "Совпадений нет"<< endl;}
        }
        
        system("Pause"); 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2012, 16:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с текстом, функции fopen и fclose (C++):

Работа с файлами fopen - C++
Программа запускается нормально, выскакивает предупреждение об использовании fopen_s заместо fopen(Почему?) Но главная проблема возникает...

Работа с курсором в fopen - C++
Задача такова: нужно записать инфу в через fopen в CSV файл. Загвоздка в том, что информация об одном обьекте сначала вычисляется и...

VisuaStudio2012 не принимает fopen() и тому подобные функции - C++
не принимает fopen() и тому подобные функции просит fopen_c() а там другие параметры нужно передавать Как заставить работать fopen()?

Как в функции открытия файла fopen() задать путь через ключи - C++
Как в функции открытия файла fopen() задать путь через ключи. Раньше путь задавался так: char...

Как в функции открытия файла fopen() задать путь через ключи - C++
Как в функции открытия файла fopen() задать путь через ключи. Раньше путь задавался так: char...

Функция fclose() и EOF - C++
int fclose( FILE *stream); Возвращает 0, если все ОК и возращает EOF, если какая-нибудь ошибка. Функция имеет тип Int. Значит...

13
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
24.06.2012, 16:04 #2
Dady, Какая ошибка? Ошибку сюды!
1
Dady
2 / 2 / 0
Регистрация: 20.03.2012
Сообщений: 53
24.06.2012, 16:08  [ТС] #3
Цитата Сообщение от Invader_Zim Посмотреть сообщение
Какая ошибка? Ошибку сюды
Появляется пустая консоль, при вводе туда чего-либо и нажатии Enter программа вылетает с треском. А ошибок нет, только предупреждение одно: warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details
0
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
24.06.2012, 16:39 #4
Dady, дебаггер в зубы и вперед на амбразуру)
1
Dady
2 / 2 / 0
Регистрация: 20.03.2012
Сообщений: 53
24.06.2012, 16:42  [ТС] #5
Цитата Сообщение от Invader_Zim Посмотреть сообщение
Dady, дебаггер в зубы и вперед на амбразуру)
в смысле?
0
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
24.06.2012, 16:44 #6
Dady, Text=fopen(s, "r"); это раз
два, считывайте с помощью fscanf(FILE *,"%s",char *a);
1
Dady
2 / 2 / 0
Регистрация: 20.03.2012
Сообщений: 53
24.06.2012, 16:51  [ТС] #7
Цитата Сообщение от Invader_Zim Посмотреть сообщение
Dady, Text=fopen(s, "r"); это раз
два, считывайте с помощью fscanf(FILE *,"%s",char *a);
Вот так:


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
#include "stdafx.h"
#include <iostream> 
#include <fstream> 
using namespace std; 
int main() 
{   setlocale(LC_ALL,"Russian"); 
    char s[256];
    cin>>s;
    FILE *Text;
        if((Text=fopen(s, "r"))==NULL)
            cout<< "no";
        size_t const n=(sizeof(Text));
    char buffer[n]; 
    char str[10]; // вводим последовательность символов    
    cout << "Введите последовательность символов ( вводим на английском ) "; 
    fscanf(FILE *,"%s",char *a); 
    while(buffer[n]=fgetc(Text)!=EOF)
        { 
            if(strstr(buffer,str) != NULL)  // strstr возвращает указатель
            {
              cout << "Совпадение обнаружено " << str << endl; // совпадение обнаружено выходим из цикла                                
            } else
            { cout << "Совпадений нет"<< endl;}
        }
        
        system("Pause"); 
}
0
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
24.06.2012, 17:01 #8
Dady,

C++
1
2
3
4
5
while(buffer[n]=fgetc(Text)!=EOF)
 
//заменить на 
 
while(!feof(Text))
1
Dady
2 / 2 / 0
Регистрация: 20.03.2012
Сообщений: 53
24.06.2012, 17:11  [ТС] #9
Цитата Сообщение от Invader_Zim Посмотреть сообщение
два, считывайте с помощью fscanf(FILE *,"%s",char *a);
Заменил и стал поддчёркивать в строке

C++
1
fscanf(FILE *,"%s",char *a);
слова FILE и char *a. Что можно сделать?
0
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
24.06.2012, 17:19 #10
Dady, вместо указателя на файл пиши свой, вместо указателя на массив, имя своего массива
1
Dady
2 / 2 / 0
Регистрация: 20.03.2012
Сообщений: 53
24.06.2012, 17:29  [ТС] #11
Цитата Сообщение от Invader_Zim Посмотреть сообщение
Dady, вместо указателя на файл пиши свой, вместо указателя на массив, имя своего массива
C++
1
fscanf(Text *,"%s",char *s);
Опять поддчёркивает char и запятую. В чём может быть дело?

Добавлено через 5 минут
Цитата Сообщение от Invader_Zim Посмотреть сообщение
Dady, вместо указателя на файл пиши свой, вместо указателя на массив, имя своего массива
Написал, но также поддчёркивает char и запятую. В чём же дело?

C++
1
fscanf(Text *,"%s",char *s);
0
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
24.06.2012, 17:45 #12
Dady,
C++
1
fscanf(Text *,"%s",s);
Спасибку тыц
1
Dady
2 / 2 / 0
Регистрация: 20.03.2012
Сообщений: 53
24.06.2012, 17:48  [ТС] #13
Цитата Сообщение от Invader_Zim Посмотреть сообщение
fscanf(Text *,"%s",s);
Не скажите почему компилятор поддчёркивает запятую? Заранее спасибо.
0
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
24.06.2012, 17:49 #14
Dady, Звездочку убери, и будет счастье)
1
24.06.2012, 17:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2012, 17:49
Привет! Вот еще темы с ответами:

Ошибка доступа после fclose - C++
Всем привет. Использую в проекте запись в бинарный файл с помощью функций fwrite, fopen, fclose. Иногда (примерно каждый 10-20 файл),...

Работа с текстом - C++
Помогите, пожалуйста, исправить программу... Задание такое: Задан текст. По правилам пунктуации пробел может стоять после, а не перед...

Работа с текстом - C++
Задача C++: Даны натуральное число n, символы s1 ...,sn.. Группы символов, разделенные пробелами (одним или несколькими) и не...

Массив. Работа с текстом. - C++
В общем, задание такого: пользователь вводит Ф.И.О (неважно чьё) и программа должна вывести суммарное количество введенных букв, количество...


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

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

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