Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 25.11.2013
Сообщений: 74
1

Удалить пробелы, стоящие между первым и вторым словом

26.04.2015, 17:53. Показов 772. Ответов 3
Метки нет (Все метки)

Удалить пробелы, стоящие между первым и вторым словом, а также между двумя последними словами.
Обязательным условием использовать функции из <string.h> и указатели.

Вот моя программа:
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
33
//2. Удалить пробелы, стоящие между первым и вто-рым словом,
//а также между двумя последними словами.
 
#include <stdio.h>
#include <string.h>
#include  <conio.h>
#include <locale.h>
int STR2 (char s[]);
 main(){
        setlocale(LC_ALL, "Russian");
        char s[200];
        puts("\n Введи строку");
        gets(s);
     //Вызов функции
     STR2 (s);   
     puts("\n Результат \n");
     puts(s);
     getch();
}
int STR2 (char s[]){
    char *r=s;
    char *s1=new char[strlen(s)];  
    //Удалить пробелы, стоящие между первым и вторым словом 
    while ((r=strstr(r," "))!=0){
        strcpy(s1,r+1);
        *r=0;
        strcat(s,s1);
    if(*r!=' ') break;}
    ////Удалить пробелы, стоящие между последними словами 
    
          
    return 0;
}
Не могу сделать так что бы убрать пробелы между двумя последними словами.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2015, 17:53
Ответы с готовыми решениями:

Вывести подстроку, расположенную между первым и вторым пробелом
Дана строка, содержащая, по крайней мере, один символ пробела. Вывести подстроку, расположенную...

В строке определить количество символов между первым и вторым двоеточием ':'
Затрудняюсь понять, как запихнуть в условие чтобы сначала проверял после первого двоеточия (считал...

Подсчитать количество букв между первым и вторым символом % в строке
Введенная строка содержит буквы и два символа %. Подсчитать количество букв между первым и вторым...

Вывести подстроку, расположенную между первым и вторым пробелом исходной
здравствуйте, нужна ваша помощь. Вывести подстроку, расположенную между первым и вторым пробелом...

3
1366 / 589 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
26.04.2015, 19:33 2
Случайно забрел. Случайно решил. Че за фигня.
Если пробелы вначале строки или в конце строки, нужно доработать.
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <stdio.h>
#include <string.h>
#include  <conio.h>
#include <windows.h>
 
int main()
{
 
        char s[200];
        puts("\n Input string\n");
        gets(s);
 
        char *s1=malloc(strlen(s)+1);
        char *pos[4];  //Первый пробел и начало второго слова, Последний пробел и начало последнего слова
 
 
        pos[0]=strchr(s,' ');  //Первый пробел strchr(s, ' ')-s;
        if (!pos[0]) {
            printf(s);
            return 0;
        }
        pos[0]--;
 
        pos[1]=pos[0];
        pos[1]++;
        while (pos[1][0]==' ') pos[1]++;
 
        pos[3]=s+strlen(s)-1;
        while (pos[3][0]!=' ') pos[3]--;
        pos[3]++;
        pos[2]=pos[3];
        pos[2]--;
        while (pos[2][0]==' ') pos[2]--;
 
 
int count =0;
char *ch;
 
        for (ch=s;ch<=pos[0];ch++){
            *(s1+count)=*ch;
            count++;
        }
 
        for (ch=pos[1];ch<=pos[2];ch++){
            *(s1+count)=*ch;
            count++;
        }
 
         for (ch=pos[3];ch<s+strlen(s);ch++){
            *(s1+count)=*ch;
            count++;
         }
 
         s1[count]='\0';
         printf(s1);
 
         free(s1);
 
 
}
1
1 / 1 / 0
Регистрация: 25.11.2013
Сообщений: 74
26.04.2015, 23:02  [ТС] 3
В 13 строке выдает ошибку:
invalid conversion from `void*' to `char*'
0
Модератор
Эксперт по электронике
8431 / 6268 / 844
Регистрация: 14.02.2011
Сообщений: 21,760
26.04.2015, 23:04 4
Цитата Сообщение от Shults_13 Посмотреть сообщение
invalid conversion from `void*' to `char*'
ну так приведи типы
C
1
char *s1=(char *)malloc(strlen(s)+1);
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2015, 23:04

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Получить все символы, расположенные между первым и вторым вхождениями C
Дан символ C и строка S, которая содержит хотя бы одно вхождение C. Получить все символы,...

Найти сумму элементов массива, между первым и вторым положительными элементами
Само задание звучит так: В одномерном массиве, состоящем из N вещественных элементов, вычислить:...

Вывести подстроку, расположенную между первым и вторым пробелом исходной строки
Дана строка, содержащая по крайней мере один символ пробела. Вывести подстроку, расположенную между...

Найти произведение элементов массива, расположенных между первым и вторым нулевыми элементами
6)в одномерном массиве сост из н эл-в , вычислить номер максимального элемента массива; найти...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.