Автор: 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[] для меня является дикой...