Jos on stringinä joku lause, niin kuinka siitä saa jonkun tietyn pituisen sanan vaihdettua toiseen, siis onko olemassa jonkin sortin replace() funktio, jolla pystyy korvaamaan vaikka "ja" sanan "tai" sanaksi ja olisiko kätevintä jakaa käyttäjän antama lause useaksi stringiksi? Jos joku tietää asiasta, niin olisin kiitollinen pikku vinkeistä.
Sanan vaihtaminen toiseksi stringissä
15
1336
Vastaukset
- on järkevää
sitten sanojen korvaaminen on helppoa.
Tee vaikka funktio joka jakaa stringissä olevan lauseen stringitaulukkoon siten, että jokainen sana tulee taulukkoon omalle indeksilleen.
Ja vaikka toinen funktio jolla yhdistät stringitaulukon yhdeksi stringiksi (eli käänteinen operaatio).
Noita käyttämällä voit vaivattomasti vaihtaa sanoja stringistä.- hemm
Jeps, yritänpä tuollaista. Kiitoksia
- hemm0
Miten muuten tehdään string taulukko, sillä eikö string c-kielessä ole char taulukko, eli kuinka saat sillon jollekin tietylle indeksille arvoksi jonkun sanan?
- kodaaja
hemm0 kirjoitti:
Miten muuten tehdään string taulukko, sillä eikö string c-kielessä ole char taulukko, eli kuinka saat sillon jollekin tietylle indeksille arvoksi jonkun sanan?
/* taulukon määrittely */
#define KOKO 100
char* taulukko[KOKO];
/* esimerkkisana ja -indeksi */
int indeksi = 5;
char* sana = "esimerkki";
/*
sanan lisääminen taulukkoon indeksille,
huomaa tilanvaraus (malloc).
*/
taulukko[indeksi] = malloc(strlen(sana) 1);
strcpy(taulukko[indeksi], sana);
/* C :n kanssa tehtäisiin hieman toisin... */ - hemm
kodaaja kirjoitti:
/* taulukon määrittely */
#define KOKO 100
char* taulukko[KOKO];
/* esimerkkisana ja -indeksi */
int indeksi = 5;
char* sana = "esimerkki";
/*
sanan lisääminen taulukkoon indeksille,
huomaa tilanvaraus (malloc).
*/
taulukko[indeksi] = malloc(strlen(sana) 1);
strcpy(taulukko[indeksi], sana);
/* C :n kanssa tehtäisiin hieman toisin... */No katoppas, kiitoksia koodaajalle avusta, c:llä oon tosiaan ohjelmaa tekemässä.
- hemm0
kodaaja kirjoitti:
/* taulukon määrittely */
#define KOKO 100
char* taulukko[KOKO];
/* esimerkkisana ja -indeksi */
int indeksi = 5;
char* sana = "esimerkki";
/*
sanan lisääminen taulukkoon indeksille,
huomaa tilanvaraus (malloc).
*/
taulukko[indeksi] = malloc(strlen(sana) 1);
strcpy(taulukko[indeksi], sana);
/* C :n kanssa tehtäisiin hieman toisin... */invalid conversion from `void*' to `char*'
Yritin kääntää tuota antamaasi koodipätkää, mutta tällanen herja tuli. Ehkäpä koodaaja osaat sanoo miks ei pelaa, jos viitsit. kiitos - hemm
hemm0 kirjoitti:
invalid conversion from `void*' to `char*'
Yritin kääntää tuota antamaasi koodipätkää, mutta tällanen herja tuli. Ehkäpä koodaaja osaat sanoo miks ei pelaa, jos viitsit. kiitosotinkin vähä c :aa avuksi, joten tuo ei nyt sitte oo niin välttämätön, mutta kiitos kumminkin.
hemm0 kirjoitti:
invalid conversion from `void*' to `char*'
Yritin kääntää tuota antamaasi koodipätkää, mutta tällanen herja tuli. Ehkäpä koodaaja osaat sanoo miks ei pelaa, jos viitsit. kiitosOlisit nyt edes laittanut sen rivin, mistä valitus tulee. Ilmeisesti kohta on kuitenkin tuo malloc. Siinä tapauksessa mallocin palauttama osoitin pitää castata, esim. jokuosoitin = (char *) malloc(..)
- hemmo
Mik26 kirjoitti:
Olisit nyt edes laittanut sen rivin, mistä valitus tulee. Ilmeisesti kohta on kuitenkin tuo malloc. Siinä tapauksessa mallocin palauttama osoitin pitää castata, esim. jokuosoitin = (char *) malloc(..)
Jep sain homman tehtyä näin, mutta vielä pitäs kysyä yhtä asiaa, eli onko mitenkään mahdollista saada käyttäjältä syöttötietona lausetta, siis silleen, että on välilyöntejä mukana stringissä, ainakaan cin ja printf eivät toimi silleen.
#include
#include
#include
#include
using std::string;
using std::cout;
int main(){
char jono[]="onpa tassa rivi on rivi riva";
char jono2[]=" ";
int i,e=0,s=0,k=0;
int t[50];
//c koodia
string s1;
s1 = jono;
string str15 = "vaihto";
//c:tä
for(i=0;i=0;i--){//oma luuppi viimeselle sanalle
k ;
if(jono[ i ] == jono2[ 0 ]){
if(k==6)
e=i 2;
break;
}
}
//replacet c :ssaa
for(i=0;i - hemmo
hemmo kirjoitti:
Jep sain homman tehtyä näin, mutta vielä pitäs kysyä yhtä asiaa, eli onko mitenkään mahdollista saada käyttäjältä syöttötietona lausetta, siis silleen, että on välilyöntejä mukana stringissä, ainakaan cin ja printf eivät toimi silleen.
#include
#include
#include
#include
using std::string;
using std::cout;
int main(){
char jono[]="onpa tassa rivi on rivi riva";
char jono2[]=" ";
int i,e=0,s=0,k=0;
int t[50];
//c koodia
string s1;
s1 = jono;
string str15 = "vaihto";
//c:tä
for(i=0;i=0;i--){//oma luuppi viimeselle sanalle
k ;
if(jono[ i ] == jono2[ 0 ]){
if(k==6)
e=i 2;
break;
}
}
//replacet c :ssaa
for(i=0;iJoo ei siinä mitään, löysin vastauksen, eli gets() toimii niin kun pitää. Kiitoksia kaikille auttajille anyway.
- kodaaja
hemmo kirjoitti:
Jep sain homman tehtyä näin, mutta vielä pitäs kysyä yhtä asiaa, eli onko mitenkään mahdollista saada käyttäjältä syöttötietona lausetta, siis silleen, että on välilyöntejä mukana stringissä, ainakaan cin ja printf eivät toimi silleen.
#include
#include
#include
#include
using std::string;
using std::cout;
int main(){
char jono[]="onpa tassa rivi on rivi riva";
char jono2[]=" ";
int i,e=0,s=0,k=0;
int t[50];
//c koodia
string s1;
s1 = jono;
string str15 = "vaihto";
//c:tä
for(i=0;i=0;i--){//oma luuppi viimeselle sanalle
k ;
if(jono[ i ] == jono2[ 0 ]){
if(k==6)
e=i 2;
break;
}
}
//replacet c :ssaa
for(i=0;isitä voisit kokeilla.
- Ananas
hemmo kirjoitti:
Joo ei siinä mitään, löysin vastauksen, eli gets() toimii niin kun pitää. Kiitoksia kaikille auttajille anyway.
gets()-funktio on yleinen syy tietoturva-aukkoihin, koska se ei rajoita luettavan puskurin pituutta, toisin kuin fgets()
tiedän, että vaikutan nipottajalta, mutta kannattaa opetella hyville tavoille alusta asti.
- hemm0
Tiedätkö muuten onko tuota STL kirjastoa vakiona kaikissa kääntäjissä.. ja miten se sisällytetään, en ainakaan saanut noita esimerkkejä toimimaan.
- hemm
hemm0 kirjoitti:
Tiedätkö muuten onko tuota STL kirjastoa vakiona kaikissa kääntäjissä.. ja miten se sisällytetään, en ainakaan saanut noita esimerkkejä toimimaan.
Sain toimiin. kiitos
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Persujen mukaan rasismi on huumoria
Vaan kun koomikko kutsui Halla-ahoa fasistiksi, niin piti haastaa oikeuteen. Mihin se huumorinitaju yhtäkkiä hävisi? ⠀2876777Rasismia kaikkialla näkevät ovat Suomen tyhmimpiä ihmisiä
ja monillahan kuluu myös mielialalääkkeitä, eli päässä on ongelmia. Mutta he eivät tajua kuinka paljon ja ihan todellis2456322Ei kahta sanaa etteikö Petteri Orpo hyväksy rasismia
Koska jatkaa hallituksessa rasistisen perussuomalaisiksi itseään kutsuvan puolueen kanssa. Se on Petteri Orpon arvomaai435691Mitkäs nuorisoporukat ovat toisia nuoria ryöstelleet (selvää rassismia)
No poliisi kertoo, että maahanmuuttajataustaisia ovat, ja isot porukat sillä yhden suomalaisen uhrin kimpussa on ollut j1585025Pitkän linjan yritysjohtaja: Suomen tapahtumat eivät ole Aasian kärkiuutinen
Viimeaikaista kohua on käytetty sisäpoliittisena lyömäaseena, Thomas Zilliacus sanoo. – Koska asiaa kuitenkin kommentoi423858Hallitus on kaadettava ja Orpon on erottava
Mikään muu hallitus ei ole oman elämäni aikana tuhonnut näin paljon tämän maan taloutta ja työllisyyttä sekä suomen main2163787Lasse Lehtonen vaatii persuja pyytämään anteeksi aasialaisilta
Persut ova romahduttaneet Suomen maakuvan parissa päivässä negatiiviseksi rasismillaan ja se alkaa vaikuttamaan jo Suome1343488HS 12/25 kysely: persut romahti, demarit raketoi
Kyyti on kylmää persuleirissä, saattaa vetää siellä silmätkin viirulleen. Sen sijaan SDP:n puoluetoimistolla voidaan pok463177Demarit ovat oikeasti törppöjä eli heikkoälyisiä
ja todistavat sitä päivittäin täällä lapsellisilla jutuillaan. Kauheasti on hehkuttaneet kuinka demarien kannatus vaan53175Rasismi rapauttaa Suomen mainetta ja hallituksen hiljaisuus pahentaa vahinkoa
Finnairin viesti Japanista on pysäyttävä: suomalaisen politiikan rasismikohut heijastuvat suoraan matkustuspäätöksiin ja3502860