Таким образом, его довольно простая задача, и я знаю, что решение, которое является простой функцией, как показано ниже:Space из строки - In Place стиля C с указателями
void removeSpaces(char* s) {
char* source = s;
char* dest = s;
while(*source) {
if(*source == ' ') {
source++;
} else {
*dest++ = *source++;
}
}
*dest = 0;
}
Я работаю в Visual C++ 2008 Экспресс издание
когда я называю это следующим она отлично работает без каких-либо проблем, то есть он удаляет все пробелы:
int main() {
char input[50] = "I like 2% milk";
removeSpaces(input);
cout<<input;
getchar();
return 0;
}
Но, проблема в том, когда я называю его, изменив строку Объявление к этому:
char * input = "I like 2% milk";
я получаю исключение (своего рода нарушение прав доступа)
Исключение с указанием на этой строке кода функции removeSpace
*dest++ = *source++;
Можно ли разработать в почему это происходит?
Почему вы не компилируете свои предупреждения с вашего компилятора? Если бы вы это сделали, это, вероятно, предупредило бы о проблеме здесь. –
Возможный дубликат [Почему простой код C получает ошибку сегментации?] (Http://stackoverflow.com/questions/164194/why-does-simple-c-code-receive-segmentation-fault) –
Я понятия не имею, как для включения предупреждений компилятора в Visuall C++. – Sushant