@Anther
Начинающий

Откуда появляются пробелы?

Программа должна удалять пробелы в начале и в конце строки. В функции она выполняет свою работу, но при возврате в мейн, она ломается.

#include <stdio.h>
#include <stdlib.h>

int size(const char str[])
{
    int i = 0;
    while(str[i] != '\0')
    {
        i++;
    }
    return i;
}

void mutableStrip(char str[])
{
    int start = 0;
    while(str[start] == ' ')
    {
        start++;
    }

    int n = size(str);
    int end = 0;
    while(str[(n-1) - end] == ' ')
    {
        end++;
    }

    str[n-end] = '\0';
    str += start;

    printf("0%s1 \n", str);
}

int main()
{
    char str[] = "  ads  fh ";

    mutableStrip(str);
    printf("0%s1 \n", str);
    return 0;
}


вывод:
0ads  fh1
0  ads  fh1

Добавил 0 и 1, чтобы было видно где начало строки, а где конец.

Почему-то в меине появляются пробелы, хотя в функции их нет.
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
@galaxy
Отлично, ответ удалили...
Значит, еще раз: str - указатель, он передается в функцию по значению, изменить ты его не можешь, вот это не влияет на str после возвращения из функции:
str += start;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы