Mikä meni vikaan ?

Olen aloittelija ja kokeilin tehdä yksinkertaisen koodin, joka ei kuitenkaan toimi.

#include

int main ()
{
char pressa[10];
cout > pressa;
if (pressa == "halonen") {
cout
8818
Äänestä

Muut lukivat myös

Vastaukset 8

Vanhimmat

- Korvaa if (pressa == "halonen") kohta strncmp -funktiolla
- char pressa[10] ois hyvä olla vähän isompi

Äänestä

#include
#include

int main ()
{
std::string pressa;
std::cout > pressa;
if (pressa == "halonen") {
std::cout

Äänestä
  • Te ja teidän C :nne.

    Tosi mies kooda C:tä!(koska c oli liian edistynyttä hänen pienille putki aivoilleen)

    Äänestä

  • using namespace std;

    hiukan levotonta lukea koodia, kun samaa std:: hässäkkää jokaisen käskyn / muuttujan edessä.

    Äänestä

  • teuro kirjoitti:

    using namespace std;

    hiukan levotonta lukea koodia, kun samaa std:: hässäkkää jokaisen käskyn / muuttujan edessä.

    Voi olla että C:hen tottuneille tälläinen käytäntö näyttää erikoiselta mutta minusta taas se selventää koodia.

    Myönnän että se voi olla vähän turhaa näin pienessä ohjelmassa olla käyttämättä 'using namespace std':tä mutta sitten kun alat kirjoittaa ohjelmia jotka käsittää monta kirjastoa ja nimiavaruuksia joilla on samannimisiä funktioita niin sitten siitä on hyötyä.

    Jos välttämättä ei jaksa sitä kirjoittaa niin kannattaa mielumin sitten ottaa käyttöön ainoastaan ne funktiot std:stä kun tarvitsee käyttämällä
    using std::cout;
    using std::cin;
    jne.

    http://www.janko.at/Humor/Computerwelt/using namespace std.htm
    http://www.informit.com/articles/article.asp?p=18091&seqNum=3&rl=1

    Äänestä

  • LOOOL kirjoitti:

    Te ja teidän C :nne.

    Tosi mies kooda C:tä!(koska c oli liian edistynyttä hänen pienille putki aivoilleen)

    pah tosi mies koodaa pasikilla tai paskalla.
    näin oon kuullu

    Äänestä

  • the manne kirjoitti:

    pah tosi mies koodaa pasikilla tai paskalla.
    näin oon kuullu

    #include
    #include
    #include

    int main ()
    {
    char pressa[10];
    printf("Kuka on Suomen presidentti?\n);
    gets(pressa);
    if (strcmp(pressa, "halonen")){
    printf("Oot oikeessa\n");
    }
    else printf("Ei ole\n");
    system("PAUSE");
    }

    Äänestä

Sait jo vastauksen. Selitänpä vielä, että tuo kohta:

if (pressa == "halonen")

ei tee mitä luulet. char pressa[10] on merkkitaulukko ja pressa on silloin osoitin. Osoittimien vertailu on eri asia kuin merkkijonojen vertailu ja siksi merkkijonojen (string) käyttöä suositeltiin jo.

Mitä tuo tekee oikeasti? Se vertaa kahta muistipaikan osoitetta, joista toinen on antamasi merkkijonon "halonen" osoite ja toinen on pressa[]-taulukon osoite. Ne ovat varmasti erisuuria. (Osoite tarkoittaa yksinkertaisesti lukua, joka kertoo missä päin muistia tieto on.)

Jos et tiedä mitä pointterit ovat, opettele heti kun kerkeät. Sitä ennen, älä käytä taulukoita []-syntaksilla. Käytä vector-luokkaa. Käytä referenssejä. Käytä olioita, joille on yliladattu ==-operaattori (kuten se string).

C on vaikea kieli. Tuollaisia virheitä tekevät kaikki alussa, ellei ole vahva C-tausta. C-ohjelmoijat tekevät toisenlaisia virheitä :-)

Äänestä

Kommentoi aloitusta


C++ kirjoitti:

Olen aloittelija ja kokeilin tehdä yksinkertaisen koodin, joka ei kuitenkaan toimi.

#include

int main ()
{
char pressa[10];
cout > pressa;
if (pressa == "halonen") {
cout

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu