Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2012, 16:45   #1
Dady 1992
Пользователь
 
Регистрация: 22.06.2012
Сообщений: 11
По умолчанию Выделение памяти

В чём ошибка выделения памяти? Подскажите, друзья!

Код:
#include "stdafx.h"
#include "stdio.h"
#include <iostream> 
#include "string.h"
using namespace std; 
int main(int argc, char* argv[])
{setlocale(LC_ALL,"Russian");
FILE *Text; 
    Text = fopen ( "Text.txt" , "r" ); 
    if (Text==NULL)
    {  
	   printf("He удается открыть файл.\n");
	   system("Pause"); 
	   return 1;}
		int n; 
		char * buffer;
		fseek (Text , 0 , SEEK_END);
		n=ftell (Text);
	buffer=(char*) malloc (sizeof(char)*n);
    char str[10]; 
    cout << "Введите последовательность символов:\n"; 
    cin >> str;            
    while (fscanf(Text,"%s",buffer) != EOF)
    {
        if (strstr(buffer,str) != NULL)
        {
            cout << "Совпадение обнаружено " << str << endl; 
			system("Pause");
            break;
		}
		else {cout << "Совпадений нет"<< endl;  
		     system("Pause");}
                for (int i=0; i < 512; i++) buffer[i]=0;
    } 
    fclose(Text); 
    return 0;
}
Dady 1992 вне форума Ответить с цитированием
Старый 26.06.2012, 16:51   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Внимательно прочитайте описание функции ftell().
Видимо, дело именно в ней.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 26.06.2012, 18:45   #3
Indian
Форумчанин
 
Регистрация: 23.02.2010
Сообщений: 107
По умолчанию

Цитата:
for (int i=0; i < 512; i++) buffer[i]=0;
Если размер файла напр. 321, то может быть выход за границы массива.

Последний раз редактировалось Indian; 26.06.2012 в 19:15.
Indian вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделение памяти Blind Guard Общие вопросы C/C++ 22 06.06.2012 19:48
Распределение памяти. Динамическое выделение памяти с++ Tolian92 Помощь студентам 8 14.05.2012 21:44
Выделение памяти (new) ImmortalAlexSan Общие вопросы C/C++ 20 05.06.2011 23:39
Выделение памяти в С++ Dj-IIyIIc Общие вопросы C/C++ 4 18.10.2010 14:39
Выделение памяти antoha.by Паскаль, Turbo Pascal, PascalABC.NET 2 29.04.2008 20:04