Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 765
Записей в блоге: 1
#1

Во введенной пользователем строке удалите все пробелы в начале и конце строки - C++

21.06.2014, 13:29. Просмотров 439. Ответов 4
Метки нет (Все метки)

Во введенной пользователем строке удалите все пробелы в начале и конце строки.
Я ищу первый индекс символа не равного пробелу и с конца первый символ не равный пробелу и копирую эту подстроку. Но при выводе этих индексов не то выводится,не пойму..
Код работает когда вводится к примеру так _ _ _ abc _ _ _ выводит abc (Где _ пробел).
Но я хотел чтоб если строка _ _ _ ab_c_ _ _ вывело ab_c что по условию задачи верно,но не то выводит.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>
#include <conio.h>
#include < stdlib.h>
#include <string.h>
 
void main()
{
    clrscr();
 char   str[100];
 char str2[100];
 int first;
 int last;
 int k=0;
 
    printf("Enter string  ");
    scanf("%s",&str);
    for(int i=0 ;i< strlen(str); i++) {
            if(str[i]!=' ') first=i;
    }
        for(int j=strlen(str)-1 ;j>=0; j--) {
            if(str[j]!=' ') last=j;
    }
        for( i=first ;i<=last; i++) {
            str2[k]=str[i];
            k++;
    }
        printf("%d",first);
    printf("%d",last);
    strcpy(str2,str);
    printf("%s",str);
     getch ();  
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2014, 13:29     Во введенной пользователем строке удалите все пробелы в начале и конце строки
Посмотрите здесь:

Удаление лишних пробелов в начале и конце строки. C++
Узнать, содержится ли в строке, введенной пользователем сочетание букв «ао» C++
Удалить пробелы из введенной строки C++
C++ Заменить все пробелы на запятые, а запятые на точки. Посчитать количество запятых во введенной строке
C++ Программа для подсчета пробелов во введенной пользователем строке
Лишние пробелы в начале строки C++
Убрать пробелы в конце строки C++
C++ Отсортировать массив из 0 и 1 так, чтобы все нули находились в начале, а все единицы - в конце массива
C++ Переписать все строки файла F.txt в файл G.txt, удаляя все пробелы в конце каждой строки
Функция удаляющая пробелы в начале и в конце строки C++
Из введенной пользователем строки выбрать слово с заданным пользователем номером и вывести это слово на экран C++
C++ Отрезание пробелов в начале и в конце строки

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12526 / 7088 / 797
Регистрация: 27.09.2012
Сообщений: 17,496
Записей в блоге: 2
Завершенные тесты: 1
21.06.2014, 13:32     Во введенной пользователем строке удалите все пробелы в начале и конце строки #2
Может я Вас удивлю, но scanf считывает до разделителя. Считывайте всю строку с помощью gets, например.
Так что это:
Код работает когда вводится к примеру так _ _ _ abc _ _ _ выводит abc (Где _ пробел).
будет работать даже без циклов, ибо разделители вначале игнорируются и в конце тоже.
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 765
Записей в блоге: 1
21.06.2014, 14:27  [ТС]     Во введенной пользователем строке удалите все пробелы в начале и конце строки #3
ввожу _ _ _ abc _ _ _
индекс первый выводит 5
последний 3
хотя должно наооборот,в чем ошибка?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    printf("Enter string  ");
    gets(str);
    //scanf("%s",&str);
    for(int i=0 ;i< strlen(str); i++) {
            if(str[i]!=' ') first=i;
    }
        for(int j=strlen(str)-1 ;j>=0; j--) {
            if(str[j]!=' ') last=j;
    }
        for( i=first ;i<=last; i++) {
            str2[k]=str[i];
            k++;
    }
    printf("%d\n",first);
    printf("%d\n",last);
    strcpy(str2,str);
    printf("%s",str);
BatonPro
30 / 30 / 24
Регистрация: 21.06.2014
Сообщений: 81
21.06.2014, 15:44     Во введенной пользователем строке удалите все пробелы в начале и конце строки #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
У Вас циклы не останавливаются, после нахождения первого "не пробела". Нужно использовать оператор break для выхода из цикла.

C++
1
2
3
4
5
6
 for(int i=0 ;i< strlen(str); i++) {
            if(str[i]!=' ') { first=i; break;}
    }
        for(int j=strlen(str)-1 ;j>=0; j--) {
            if(str[j]!=' ') {last=j; break;}
    }
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 765
Записей в блоге: 1
21.06.2014, 15:52  [ТС]     Во введенной пользователем строке удалите все пробелы в начале и конце строки #5
Спасибо,глупые ошибки допустил.
Yandex
Объявления
21.06.2014, 15:52     Во введенной пользователем строке удалите все пробелы в начале и конце строки
Ответ Создать тему
Опции темы

Текущее время: 17:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru