![]() |
[C++] strupr
Hallo.
Ik heb een über n44b vraag, maar ik kan het werkelijk nergens duidelijk vinden. Ik begin ook maar net met deze zooi, maar goed. Ik moet een bepaalde zin in hoofdletters hebben. Maar ik weet niet hoe dat precies moet. Ik weet wel dat je strupr moet gebruiken. Dit is wat ik heb. Eventjes eenvoudige neergezet: #include <iostream> #include <string> using namespace std; main() { cout << "Deze zin word geheel in hoofdletters afgedrukt." << endl; return 0; } Serieus, ik voel gewoon schaamte nu. Maar ik weet het echt niet. Zou iemand me verder kunnen helpen? Bij voorbaat dank. Edit: Ik gebruik DevC++ als compiler. |
Nee sorry, dat kan ik niet.
|
#include <iostream>
#include <cstring> using namespace std; main() { cout << (strupr("Dit is in hoofdletters")) << endl; return 0; } Ik dacht dat dit het zou moeten zijn, maar dan krijg ik de volgende foutmelding: "Een toegangsovertreding (Segmentatie-fout) is opgestreden in je programma." |
Citaat:
Erm, je impliceert met return 0 dat de returntype van de main methode een numerieke danwel boolse waarde is; vermijd ambiguiteit en ook al spreekt het in het geval van main wel voor zich, geef main expliciet een int of bool o.i.d. als returntype. Of haal de return statement gewoon in z'n geheel weg, en gebruik geen (lees:void) als returntype. Maar zelfs zonder genoemde aanpassing compileert hij hier en draait hij ook, dus vreemd :) Gecompileerd overigens met openwatcom. |
Citaat:
Ik kan niet wachten tot in Visual.net heb. |
Citaat:
kind kan de was doen ;), watcom compiler linker doet de rest voor je. |
Probleem opgelost. Dit moest het zijn:
#include <iostream> #include <string> using namespace std; main() { char zin[30] = "Dit is in hoofdletters"; strupr(zin); cout << zin << endl; } |
is ook logisch. (let in deze post ff niet op eventuele syntax fouten, ik heb t niet gecheckt, t gaat om de uitleg.)
in je constructie 'cout << (strupr("blaat")) << endl; is 'blaat' geen pointer, dus niet benaderbaar voor strupr. (zoiets iig). strupr verwacht een pointer. (misschien dat je nu zeg 'maar 'zin' is geen pointer : dat istie wel, het is immers de naam van een array. de naam van een array zonder verdere toevoegingen resulteert in het adres van de array.). waar ik nu eigenlijk benieuwd naar ben : als je dit opsplits dus : strupr(zin); cout << zin; is het resultaat dan nog uppercase (hoofdletters) of niet ? (serieus, ik ben nieuwsgierig maar heb hier ff geen compiler bij de hand.) |
no manual entry for strupr :P
ehm, ehm, ehm.... http://www.thinkage.ca/english/gcos/...ib/strupr.html toch een manual entry, maar toch. Ik heb geen idee waarom je dit zou gebruiken. edit: Citaat:
Ik denk dat de fout is dat je de return value van strupr naar cout stuurt, terwijl je de de zin in kwestie naar cout wil sturen. edit nog ein mal: ik weet niet waar je de hele functie strupr vandaan haalt, maar gcc 3.4.3 herkent 'm iig niet. (En DevCpp gebruikt die). En bovendien istie niet onderdeel van de ANSI standaard. Prachtige taal, C++ :evil: |
Citaat:
"xxx" -> const char * char a[]= "xxx" -> char a[4] = {'x','x','x','\0'}; Wat je eerst deed leid tot ongedefinieerd gedrag, vandaar dat het bij watcom wel werkte. |
Citaat:
|
Citaat:
c-functies retourneren normaal gesproken niet het resultaat van de functie, vandaar de naam 'functie', lekker logisch. (ik snap de gedachte erachter wel, maar in 9 van de 10 gevallen is snelheid helemaal niet zo belangrijk dat je uberhaupt C zou willen gebruiken.) inderdaad, mooie taal, C / C++ :evil: |
nou ja, in de verdediging van C: ik kan in C wel gewoon 'man strtok' bijvoorbeeld oid intypen, en dan krijg ik de preciese functiebeschrijving :) en hoe je 'm zou moeten gebruiken. Met C++'s fijne non-standard libraries word dat een fijne tik lastiger.
Nee, ik weet zeker dat "Blaat" intern als pointer gerepresenteerd word, (een const char *) want ik doe het vaak :) Of je zomaar die geheugenruimte mag aanpassen, dat weet ik niet zeker. Ik kopieer altijd de string in mijn functies. |
Citaat:
|
Citaat:
ps. Je hoort er niet van uit te gaan dat het kan. |
Alle tijden zijn GMT +1. Het is nu 23:50. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.