Usuwanie litery z łancucha w C

0

Witam. Jestem początkującym programistą i głowię się z zadaniem : Napisz program, który usunie z podanego tekstu na wejsciu wszystkie literki "e" . Tekst ma byc nie dłuższy niz 128 znaków. Tak zmodyfikowany tekst ma być zapamiętany w miejsce starego i wyprowadzony na ekran. Użyj funkcji strchr() i strcpy().

Ktoś by mógł coś doradzić, podpowiedzieć ?
Jestem wdzięczny z góry za każdą pomoc. Pozdrawiam.

4

Pobaw się tymi funkcjami, zobacz co zwracają, co robią, jak zrozumiesz to rozwiązanie problemu powinno być dla Ciebie oczywiste. Polecam dokumentację na cppreference.com

http://en.cppreference.com/w/cpp/string/byte/strchr

0

I masz kłopot bo przy użyciu tych funkcji nie bardzo jesteś w stanie to zrobić strchr znajdzie Ci pierwsze e ale strcpy nie wytnie.
strcpy kopiuje od wskazanego miejsca do końca łańcucha więc nie da się skopiować początku i dokleić końca. Ale na wszystko jest sposób.
Lecisz w pętli while szukając e i jak znajdziesz to kopiujesz strcpy(e, e+1) i na końcu wstawiasz 0, a jak nie znajdzie to wychodzisz z pętli
Nie jest elegancko ale działa

1

W ramach ciekawostki:
Pomijając wewnętrzne wymagania, ponieważ program ma przyjmować wejście i wypluwać wejście, to całość można ograniczyć do czegoś takiego:

#include <stdio.h>

int main(void) {
	char c;
	while((c = getchar()) != EOF) {
		if(c != 'e') {
			putchar(c);
		}
	}
	return 0;
}

http://ideone.com/v194JS

1

Jeśli są to zajęcia z programowania w C++ to bardziej wypadała by napisać takie coś:

#include <algorithm>
#include <iostream>


int main()
{
	char str[] = "Hello world!";
	std::stable_partition(std::begin(str), std::end(str), [](char c) { return c != 'e'; });

	std::cout << str << std::endl;
	return 0;
}
3

@Wielki Mleczarz raczej coś takiego

#include <iostream>
#include <iterator>
#include <algorithm>
int main() {
	std::copy_if(
		std::istreambuf_iterator<char>(std::cin),
		std::istreambuf_iterator<char>(),
		std::ostream_iterator<char>(std::cout),
		[](auto c){ return c != 'e'; }
	);
	return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1