Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: StarWorm   (19.11.2008 в 23:04)
Хочу узнать в чем заключается принципиальное отличие!
При написании такого кода:
#include "stdafx.h"
# include <stdio.h>
# include <conio.h>
# include <iostream>

using namespace std;

void clearStr(char* arrStr)
{
char* tmp;
int result;
while((tmp=strstr(arrStr,"  "))!=NULL)
{
result=(int)(tmp-arrStr+1);
while(arrStr[result]!=NULL)
{
arrStr[result++]=arrStr[result+1];
}
}
}

int main()
{
char* str = new char[200];
gets(str);
str="hello    my dear  world  !  !!";
char str1[]="hello    my dear  world  !  !!";
clearStr(str);
clearStr(str1);
cout<<str<<"\n"<<str1;

delete [] str;
getch();
return 0;
}


прога должна убирать "лишние" пробелы, не включая начальные и конечные! :)
В итоге если я заполняю char* str = "..." то при передаче в функцию я не могу ищменять символы, а также не работает delete [] str!
Если же я заполняю при помощи gets(str) ну или cin.getline(str,255) - то все нормально!
Ну а если я заполняю как char str[]="..." то тоже все пучком и ничто нигде не ругается!
Просто я уже оч. привык работать с указателями и запись вида 'typedef' vae[] для меня является дикой...


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: