#include <iostream> using namespace std; int main (void) { char teksti[101]; cout << "Kirjoita teksti\x84 " << endl; cin.read(teksti, 101); _strupr(teksti); std::cout << endl << teksti; cin.ignore(1000, '\n').ignore(1000, '\n'); return 0; }
Kun ajan tuon komentotulkissa muokkaamaan olemassaolevaa tekstitiedostoa niin se laittaa täytemerkkiä jos lopussa on tyhjää. Mitenkäs siitä pääsee eroon??
Mod. edit: kooditagit
Laita nolla perään.
Tuo read
tekee formatoimattoman luvun eikä se lisäile nullimerkkejä tms. Ja kun tekee formatoimatonta lukua, gcount
kertoo, paljonko tavaraa todella tuli.
cin.read(teksti, sizeof(teksti)-1); teksti[cin.gcount()] = '\0'; _strupr(teksti);
Jesss!!!!! Kiitti koo!!!
Vielä lisäkysymys: voiko cin.read:iä käyttää stringissä??
Ei, jos tarkoitat, että voiko read
-funktiolla lukea suoraan stringiin. Tuo funktio on tarkoitettu formatoimattomaan lukemiseen, se lukee kaiken - kontrollimerkit ja vaikka mitkä - tiedostosta sellaisenaan, siksi rajapinta on aika matalla tasolla, osoite char-puskuriin ja puskurin maksimikoko.
Oletkohan puuhaamassa sellaista, mihin parhaiten sopisi jokin >>
-operaattori tai erillinen getline
-funktio?
Juu, oikeassa olit
Aihe on jo aika vanha, joten et voi enää vastata siihen.