Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2012, 14:37   #1
ovner
 
Регистрация: 06.10.2012
Сообщений: 8
По умолчанию Поиск и вывод слов со строки которые имеют указанную букву

Всем привет, нашел код программы в инете который в введенной строке ищет и выводит слова которые начинаются на указанную букву, помоги пожалуйста переделать код что бы выводить слова которые в себе имеют указанную букву, не важно или первая или 3-4 и тд.
И еще нужно в конце убрать вывод цикла memory error, а то когда его убираю то программа не работает.

Код:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
 
 
/* указатель на следующее слово в строке, или 0, если слова кончились */
char *nextWord(char *str){
    char *p;
    for ( p = str; *p != '\0' && *p!=' '; p++ )
        ;
    if ( *p == '\0' )
        return NULL;
    while ( *p==' ')
        p++;
    return ( *p == '\0' ) ? NULL : p;
}
 
/* 
*   возвращает одно слово из строки str в буфере wrd. динна wrd = len - 1
*   в случае неудачи вернёт NULL
*/
char *getWord(const char *str, char *wrd, unsigned int len){
    char *p;
    char *w;
 
    for ( p = (char *)str, w = wrd;  *p != '\0' && *p!=' ' ; p++, w++ )
        *w = *p;
    *w = '\0';
 
    return wrd;
}
 
/*  Найти в строке все слова, начинающиеся на заданную букву.
    Найденные слова вывести в алфавитном порядке.
    Если нужных слов нет, то выдать сообщение.
*/
int main(){
    char buf[500];
    char wrd[500];
    char **wrds, *pBuf;
    unsigned int count, len, i;
    char c;
    
    printf("Enter some string: ");
    gets(buf);
   
    
printf("Enter some symbol: ");
    scanf("%c", &c);
   
    
    /* проход по строке, создание массива слов */
    for ( pBuf = buf, count = 0, wrds = NULL; pBuf != NULL; pBuf = nextWord(pBuf) ){
        if ( *pBuf == c ){
            getWord(pBuf, wrd, 500);
            count++;
            if ( count == 1 ){
                if ( (wrds = (char**)malloc(sizeof(char*))) == NULL ){
                    printf("Memory error!\n");
                    exit(1);
                }
            }
            else{
                if ( (wrds = (char**)realloc(wrds, count * sizeof(char*))) == NULL ){
                    printf("Memory error!\n");
                    exit(1);
                }
            }
            len = strlen(wrd);
            if ( (wrds[count - 1] = (char*)malloc(len + 1)) == NULL ){
                printf("Memory error!\n");
                exit(1);
            }
            strcpy(wrds[count - 1], wrd);
        }
    }
    
    if ( !count ){
        printf("No words starting with '%c' found in string \"%s\"\n", c, buf);
        
    }
     /* и вывод */
    for ( i = 0; i < count; i++ )
        printf("%s\n", wrds[i]);
         getchar();
    getchar();
}
ovner вне форума Ответить с цитированием
Старый 07.10.2012, 00:09   #2
ovner
 
Регистрация: 06.10.2012
Сообщений: 8
По умолчанию

помогите пожалуйста очень нужно
ovner вне форума Ответить с цитированием
Старый 07.10.2012, 01:43   #3
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

именно на сях чтоль?

Код:
#include <stdio.h>
#include <string.h>

int main()
{
	char str[512];
	char c;
	char *word;
	const char delim[] = " ";

	printf("input character: ");
	c = fgetc(stdin);

	scanf("%*[^\n]");
	scanf("%*c");

	printf("input string: ");
	fgets(str, sizeof(str), stdin);

	word = strtok(str, delim);
	while (word != NULL) {
		if (strchr(word, c) != NULL)
			printf("%s\n", word);
		word = strtok(NULL, delim);
	}

	return 0;
}
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки: На печать выдать слова, которые имеют четную длину и одинаковые первую и последние буквы Ric Помощь студентам 0 04.05.2012 22:00
В строке определить количество слов, которые содержат букву «а» (Delphi) Dark Raven Помощь студентам 2 19.01.2012 16:56
Найти количество слов которые заканчиваются на заданую букву. Си SeRhy Помощь студентам 11 10.01.2011 00:17
Дана строка, состоящая из нескольких слов. Найти количество слов, которые содержат хотя бы одну букву "А" Mashaa Помощь студентам 13 09.12.2009 13:28
Вывод слов на определенную букву REztor Помощь студентам 12 22.03.2009 21:48