27. marts 2002 - 23:10Der er
15 kommentarer og 1 løsning
Test om streng indeholder bogstaver
Jeg har et program i c++, hvor brugeren bliver bedt om at skrive et nummer, som gæmmes i en variabel af typen int. Problemmet er at hvis brugeren skrivet et eller nogle bogstav(er), bryder programmet sammen. Så mit spørgsmål er, hvordan kan jeg teste om variablen kun indeholdet tal???
Det er jo det, der er sagen. Der er meget der ikke er defineret i C++. I C++ har du ikke nogen garanti for at en pointer er null, selv om den ikke er valid. Det er programmørens ansvar. Det er fint at checke for null - værdi, men hvad hvis pointeren peger et andet tilfældigt sted. Du bruger selv: char* p; Hvilken værdi har p? Hvis checket for null skulle være en garanti skulle alle erklæringer laves som : char* p = 0; , hvis der ikke tildeles en anden værdi. Men bliver de det? Desuden var der tre små tegn i enden af den linie
=> greybeard: Jamen så er alting jo godt; "det er programmørens ansvar". Hvilken prøgrammør? Ham der har lavet funktionen eller ham der bruger den..? (ofte den samme)
Det jeg blot vil gøre klart er at der er ikke defineret nogle regler herfor, i C++'s semantik. Hvordan man ønsker at programmere er helt op til den enkelte, men asvaret placeres efter det pattern eller de principper man vælger, ikke efter en "ægte C++ stil".
>> jpk Ham der kalder funktionen, da det ikke er muligt for ham, der laver den at sikre sig 100%. Hvis det er den samme, som laver den, så fint. Så burde vedkommende vide, hvilke faldgruber der er.
Og når jeg siger 'ægte C++ stil', så mener jeg netop hvad du siger:"Det er ikke defineret." Noget er der dog defineret. I hvert fald uofficielt. Der lægges stor vægt på performance, og performance lider hver gang, der skal laves ekstra check for fejl. Det er både styrken og svagheden i C++. Masser af frihed, men også masser af muligheder for at kvaje sig.
Der ligger på den ene side en fare i at foregive at noget er idiotsikkert, når det ikke er det alligevel. Det giver en falsk tryghed, som før eller siden vil give problemer. På den anden side kan man argumentere for at gøre det så godt man kan.
I øvrigt er stil ikke et spørgsmål om definition, men om individuel optræden. En optræden, der er præget af hvordan andre har gjort før en selv.
=> greaybeard: Og sådan kunne vi fortsætte i al evighed...
Der er IKKE én bestemt part, der ALTID har ansvaret som du beskriver! Det vigtige er, at grænsefladen for den enkelte funktion er klart defineret, det er nemlig den eneste måde hvorpå man tilnærmelsesvist kan sikre sig! Hvis du snakker om sikker og robust softwareudvikling, tror jeg du skal gå lidt længere end blot at antage at alle har samme stil...
Og nej, det er ikke altid performance der er i højsædet! Det er, ligesom førdiskuterede emne, individuelt og afhængigt af andre ting.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.