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

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

Восстановить пароль Регистрация
 
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 1
21.06.2014, 13:29     Во введенной пользователем строке удалите все пробелы в начале и конце строки #1
Во введенной пользователем строке удалите все пробелы в начале и конце строки.
Я ищу первый индекс символа не равного пробелу и с конца первый символ не равный пробелу и копирую эту подстроку. Но при выводе этих индексов не то выводится,не пойму..
Код работает когда вводится к примеру так _ _ _ 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++ Заменить все пробелы на запятые, а запятые на точки. Посчитать количество запятых во введенной строке
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11819 / 6798 / 769
Регистрация: 27.09.2012
Сообщений: 16,877
Записей в блоге: 2
Завершенные тесты: 1
21.06.2014, 13:32     Во введенной пользователем строке удалите все пробелы в начале и конце строки #2
Может я Вас удивлю, но scanf считывает до разделителя. Считывайте всю строку с помощью gets, например.
Так что это:
Код работает когда вводится к примеру так _ _ _ abc _ _ _ выводит abc (Где _ пробел).
будет работать даже без циклов, ибо разделители вначале игнорируются и в конце тоже.
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 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
Сообщений: 743
Записей в блоге: 1
21.06.2014, 15:52  [ТС]     Во введенной пользователем строке удалите все пробелы в начале и конце строки #5
Спасибо,глупые ошибки допустил.
Yandex
Объявления
21.06.2014, 15:52     Во введенной пользователем строке удалите все пробелы в начале и конце строки
Ответ Создать тему
Опции темы

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