Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > С/С++
Перезагрузить страницу Ошибка с указателем..ПОМОГИТЕ!
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
5neverthesame94 5neverthesame94 вне форума
Member
 
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.02.2012
По умолчанию Ошибка с указателем..ПОМОГИТЕ! - 18.11.2012, 00:39

Привет)) В общем указатели - моя больная тема. И вот написала я программу,которая переставляет наоборот все слова в строке. Вначале делаю просто реверс строки посимвольно,а потом - реверс каждого слова (тоже посимвольно). Алгоритм рабочий,но с реализацией проблема. Ошибку в коде я пометила... Посмотрите,подскажите,пожалуста,что не так.

Ошибка : Необработанное исключение в "0x013014bc" в "laba4_1.exe": 0xC0000005: Нарушение прав доступа при чтении "0xffffffff".

Прога желательно без функций string.h, но одну я таки себе позволила...strchr,хотя,не уверена,что она уместна..Заранее спасибо...)
cpp Код:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdarg.h>
#define N 10
#define M 31

void reverse(char *str)  
{
    char *end,*temp_end;  //указатель для конца и для сохранения позиции
    char temp;
    char  *str_s=str;  //указатель для сохранения позиции начала строки
   
    for(end=str;*end!='\0';end++)
        ;

    end--;

    while(str<end){   //общий реверс
        temp=*str;
        *str=*end;
        *end=temp;
        str++;end--;
    }
   
    str=end=str_s;  //сохраняем позиции в начале
   
    while(*end!='\0')
    {
        end=strchr(str,' '); //находим первый пробел
   
        temp_end=end;   //сохраняем
        end--;
       
        while(str<end){  //реверс слова
        temp=*str;
        *str=*end;   // ТУТ ОШИБКА!
        *end=temp;
        str++;end--;
    }
    str=end=++temp_end;  //идём на следующее слово
    }
}
void func(char* st1,...)
{
    char* pr;
    va_list parg; // указатель на неоглашенные параметры

    reverse(st1);
    puts(st1);
   
    va_start(parg,st1);//устанавливаем указатель на первый неоглаш. параметр
   
    do{
        pr=va_arg(parg,char*);
        reverse(pr);
        puts("\n");
        puts(pr);
     }while(1);
va_end(parg);
}

int main(void)
{  
     int i=0;
     char string[N][M];

     puts("\nEnter strings:\n");

   do{
        printf("%d)",i+1);
   }while(*(gets(string[i++])));

    func(string[0],string[1],string[2],string[3]);

    getch();
    return 0;
}

Последний раз редактировалось Влад; 20.11.2012 в 09:50
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите исправить ошибку с указателем!! 5neverthesame94 С/С++ 6 04.11.2012 23:10
Срочно Помогите!!! Ошибка 10020!!! Артём 98 Любые вопросы от новичков 7 21.07.2012 17:36
Системная ошибка помогите.!!! gitty Материнские платы 12 24.04.2011 18:14
Робота SQL+PHP Ошибка в коде помогите пож. Elfen PHP 2 29.12.2010 20:17
Помогите! В чем ошибка??? stasy1679 Prolog 7 20.12.2010 21:16
ПОМОГИТЕ! ОЧ НУЖНО! ОШИБКА! Алдар Мониторы 8 27.02.2010 23:19
Помогите! Непонятная ошибка! Mizai Компьютерная безопасность 33 02.08.2007 14:25
Работа с указателем и присвоение значения imported_Andrew_3db Delphi 16 10.05.2006 19:18
Работа с указателем в классе TLabel etc C++ Builder 2 27.01.2005 10:36
Помещение в отчет данных из строки с указателем DBGrid mitrik C++ Builder 0 08.09.2004 13:15
Помогите пожалуйста. Ошибка программы lina Visual Basic 1 13.05.2004 18:29
Создание Timer с указателем на экземпляр CWnd Серега М. Visual C++ 1 09.02.2004 09:46



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов