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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Cras
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 16
#1

Удалить из текста лишние пробелы - C++

03.01.2011, 14:03. Просмотров 1622. Ответов 6
Метки нет (Все метки)

Здравствуйте. Помогите написатьпрограмму на С. Удалить из текста лишние пробелы (между словами должен остаться только один пробел). И еще на каждые 5 строк программы должны быть коментарии.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
2842 / 1779 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
03.01.2011, 14:09     Удалить из текста лишние пробелы #2
Cras,
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <string.h>
 
#define BUFSIZE 256
 
int main(void)
{
    char str[BUFSIZE], *p;
    printf("\n\nEnter string -> ");
    scanf("%[^\n]%*c", str);
 
    printf("\n\nResult -> ");
    for(p = strtok(str, " "); p; p =strtok(NULL, " "))
        printf("%s ", p);
 
    printf("\n");
    return 0;
}
Результат
Код
Enter string -> kjfhsdjkf    dfhdfgd    dhgfdh    dhfd


Result -> kjfhsdjkf dfhdfgd dhgfdh dhfd

Process returned 0 (0x0)   execution time : 6.406 s
Press any key to continue.
silent_1991
03.01.2011, 14:57
  #3

Не по теме:

asics, вы забыли в 5-й, 10-й и 15-й строке комменты поставить

asics
Freelance
Эксперт C++
2842 / 1779 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
03.01.2011, 15:16     Удалить из текста лишние пробелы #4
silent_1991, Исправляюсь
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <string.h>
                          //Комент
#define BUFSIZE 256
 
int main(void)
{
    char str[BUFSIZE], *p;
    printf("\n\nEnter string -> ");
    scanf("%[^\n]%*c", str);//Комент
 
    printf("\n\nResult -> ");
    for(p = strtok(str, " "); p; p =strtok(NULL, " "))
        printf("%s ", p);
                            //Комент
    printf("\n");
    return 0;
}
Cras
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 16
03.01.2011, 19:59  [ТС]     Удалить из текста лишние пробелы #5
Вбиваю любую строчку и в результате пишет <null> что такое?
Jupiter
03.01.2011, 20:28
  #6

Не по теме:

Цитата Сообщение от asics Посмотреть сообщение
scanf("%[^\n]%*c", str);
интересная конструкция, где вы такое откопали?

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2011, 21:41     Удалить из текста лишние пробелы
Еще ссылки по теме:

Удалить лишние пробелы C++
Удалить все лишние пробелы C++
Удалить лишние пробелы в строке C++
Удалить из текста лишние пробелы (из нескольких подряд идущих пробелов оставить только один) C++
C++ Удалить лишние пробелы в строке

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

Или воспользуйтесь поиском по форуму:
NightmareZ
1339 / 562 / 37
Регистрация: 31.03.2009
Сообщений: 1,916
03.01.2011, 21:41     Удалить из текста лишние пробелы #7
Цитата Сообщение от Maxwe11 Посмотреть сообщение

Не по теме:


интересная конструкция, где вы такое откопали?

Это ж банальщина, в любой книге по C есть Как вообще можно писать на C, не зная этого?

Спецификатор %[] позволяет указать, какие символы нужно вводить. Например %[ABC] указывает, что нужно вводить только символы 'A', 'B' и 'C', а %[A-Z] - что любые символы от 'A' до 'Z' включительно. Символ ^ заставляет работать функцию scanf наоборот - вводить все символы, кроме указанных. Например, %[^ABC] - вводить любые символы кроме 'A', 'B' и 'C'.

Следовательно, конструкция %[^\n] заставляет вводить всё, кроме перевода строки.

Звёздочка перед спецификатором позволяет прочитать поле, но не присваивать ничему. Т.е. выражение %*c позволяет считать и пропустить один символ.
Yandex
Объявления
03.01.2011, 21:41     Удалить из текста лишние пробелы
Ответ Создать тему
Опции темы

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