Tässä olen kuumeisesti yrittänyt tehdä c :lla harjoitustyötä. Tehtävänä olisi poistaa tietty merkkijono ja pitäisi käyttää string.h luokkaa. Onnistuin tekemään ohjelman pätkän käyttäen string luokkaa, mutta nyt sitten en tiedä mitä pitäisi tehdä että saisi sen toimimaan myös käyttäen string.h luokkaa. Kertokaa joku viisaampi mitä pitäisi tehdä. Tässä esimerkki toimivasta ohjelmasta käyttäen stringiä.
#include
#include
using namespace std;
string poista(const string &alkup, const string &p)
{
string jono (alkup);
int pit = p.length();
int paikka;
while ((paikka = jono.find(p)) !=string::npos)
jono.replace(paikka, pit, "");
return jono;
}
int main()
{
cout
#include
#include
using namespace std;
string poista(const string &alkup, const string &p)
{
string jono (alkup);
int pit = p.length();
int paikka;
while ((paikka = jono.find(p)) !=string::npos)
jono.replace(paikka, pit, "");
return jono;
}
int main()
{
cout
Vastaukset 6
Vanhimmat
string.h on kyllä C-kielen puolella, joten ei oikein voi puhua luokasta.
jotenkin näin se menisi alkuperäinen nerkkijono sotketaan eikä muistia varata dynaamisesti
#include
#include
char *poista (char *alkup, char *p)
{
char *p1 = alkup;
char *p2;
int l = strlen(p);
static char pala[256];
pala[0] = '';
while((p2 = strstr(p1,p))!= NULL)
{
*p2 = '';
strcat(pala,p1);
p1 = p2 l;
}
strcat(pala,p1);
return pala;
}
int main (void)
{
puts( poista("testi ", "st"));
puts(poista("kokeilu", "ilu"));
puts(poista("rivi", "r"));
return 0;
}
...kommenteista. Mitenkäs jo tuo poisto pitäisi tehdä omana aliohjelmanaan jota pääohjelma sitten vain kutsuisi?
tarkoitatko että sinulla on kaksi exe:ä ?
...kuin ohjelmoimaan. Eli tarkoitan sitä että ohjelma rakentuisi niin että olisi main jossa mahdollisesti kysyttäisiin käyttäjältä ne merkkijonot. Sitten olisi erikseen esim. poista niminen funktio jota main sitten vain kutsuisi.
#include
char buffer[256];
gets(buffer);
poista(buffer,p);
getsin ongelma on se että jos kirjoitat enemmän merkkejä kuin puskuriin mahtuu niin ... crash
Toinen parempi mahdollisuus on käyttää fgets() funktiota ja lukea stdin tiedostosta(näppäimistöltä) (vrt. C cin olio)
include stdio.h ja stdlib.h
char buffer[256];
fgets(buffer,sizeof(buffer), stdin);
toivottavasti noista on apua.
C ? nimisessä otsikossa on poista niminen funktio jota main kutsuu, lisäät mainiin vaan ne arvojen kyselyt.
int main (void)
{
char eka[50];
char toka[50];
printf("Anna alkuperäinen merkkijono: ";
eka