mikä vikana kun kääntäjä valittaa tästä
char sana[100]; int pituus = 0; while(sana[pituus] != "") pituus++;
niin ja kääntäjä on mingw ja kieli c++
Minä pistäisin noiden lainausmerkkien väliin \0-merkin siis:
while (sana[pituus] != '\0') pituus++;
Huomaa '-merkit "-merkkien sijaan...
Elikkä C:llä tehtynä (en käytä C++-tietystä syystä):
#include <stdio.h> int main(void) { char sana[100]; int pituus = 0; printf("Anna sana: "); gets(sana); while (sana[pituus] != '\0') pituus++; printf("Sanan pituus oli %d merkkiä!", pituus); return 0; }
Ja ymmärtää myös välilyönnit! Huom! Kääntäjänä on DJGPP...
sana[pituus]
on tyyppiä char
, kun taas lainausmerkkien välissä oleva teksti edustaa tyyppiä char *
eli char-osoitin (tai -taulukko), joten vertailu ei onnistu. Merkkijono päättyy merkkiin ASCII-0, jonka voi merkitä esim. ylläolevalla tavalla tai ihan kokonaislukuna nolla. (while (sana[pituus] != 0)
)
jaa en ole vielä perehtynyt c++:n noin tarkasti, mutta kiitos vain sain toimimaan
Aihe on jo aika vanha, joten et voi enää vastata siihen.