/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
char linie m/ bogstav ?
Fra : G42


Dato : 06-01-02 16:10

Når nu man skriver - char inputlinie[800]; og bruger den sammen med -
fgets(inputlinie,800,stdin),
så virkder det fint med at bruge tal som man taster ind på input pladsen.

Men hvad hvis man gerne vil have et bogstav til at give en kommando videre:
fx tast 'R' for at ...osv.

Så skal der vil ikke stå et tal ved char linien ??
Hvad skriver man så?

Vh

G.



 
 
Rune Klausen (07-01-2002)
Kommentar
Fra : Rune Klausen


Dato : 07-01-02 02:26


"G42" <gugge@image.dk> wrote in message
news:MNZZ7.14854$Zm5.1293122@news000.worldonline.dk...
> Når nu man skriver - char inputlinie[800]; og bruger den sammen med -
> fgets(inputlinie,800,stdin),
> så virkder det fint med at bruge tal som man taster ind på input pladsen.
>
> Men hvad hvis man gerne vil have et bogstav til at give en kommando
videre:
> fx tast 'R' for at ...osv.

if (inputlinie == 'R')
printf("Du har trykket på R");

??



Sloth (07-01-2002)
Kommentar
Fra : Sloth


Dato : 07-01-02 09:57

Det jeg mente var at man skulle ( ved at trykke på et bestemt bogstav fx. R)
få programmet til
at hoppe videre eller tilbage til en løkke eler anden kode..

G..



HIB (07-01-2002)
Kommentar
Fra : HIB


Dato : 07-01-02 10:06

"Sloth" <gugge@image.dk> wrote in message
news:kpd_7.33$uY5.1612@news.get2net.dk...
> Det jeg mente var at man skulle ( ved at trykke på et bestemt bogstav fx.
R)
> få programmet til
> at hoppe videre eller tilbage til en løkke eler anden kode..

Det gør den vel også med den kode jeg har skrevt, hvis inputlinie er = r så
et eller andet, som du selv bestemmer, f.eks hopper til en anden procedure
eller noget.

if ( inputlinie == r);
{
procedure();
}

skulle jeg mene, men jeg er også selv lige begyndt på c++, så det er ikke
helt sikkert at det virker.
--
Rune




Anders Melchiorsen (07-01-2002)
Kommentar
Fra : Anders Melchiorsen


Dato : 07-01-02 12:50

"Rune Klausen" <Rune.klausen@paradis.dk> skrev:

> if (inputlinie == 'R')
> printf("Du har trykket på R");

Jeg har, underligt nok, ikke set det nævnt i tråden, så nu gør jeg det
selv. I C kan man kun sammenligne tal ved hjælp af ==. Enkelttegn
såsom 'R' er i denne forbindelse tal, repræsenteret ved deres
ASCII-værdi[1]. Man kan derfor sammenligne et enkelt tegn med fx

char inputlinie[80];
if (inputlinie[0] == 'R')
// ens tegn

Hvis man imidlertid skal sammenligne flere tegn, altså hele ord, er
man nødt til at benytte funktionen strcmp(), som tager to tekststrenge
som argumenter og returnerer 0 hvis de er ens:

char inputlinie[80];
if (strcmp(inputlinie, "RET") == 0)
// ens strenge

Bemærk forskellen på apostrofferne omkring et enkelt tegn og
citationstegnene omrking en tekststreng. "R" er således en streng (med
længde 1) og kan ikke (med fornuftigt resultat) sammenlignes ved hjælp
af ==.

Som alternativ til strcmp() kan man manuelt lave en løkke, som
sammenligner hvert enkelt tegn:

char inputlinie[80];
char kommando[] = "RET";
int i = 0
while (inputlinie[i] && kommando[i] && inputlinie[i] == kommando[i])
++i;
if (inputlinie[i] == kommando[i])
// ens strenge

Funktionen strcmp() består stort set af en sådan løkke, men at lave
den selv har den fordel, at man kan ændre sammenligningen, fx til

toupper(inputlinie[i]) == toupper(kommando[i])

hvis man vil have at "RET" skal være lig med "Ret". Hvis jeg husker
ret indeholder standard C ikke en sammenligningsfunktion, der ikke
bekymrer sig om store/små bogstaver.


Hvis man bruger C++ har man std::string, som indeholder en operator==,
der uden videre kan sammenligne to strenge. Det er noget lettere, og
std::string er en af de meget gode grunde til, at C++ er sjovere end C
som første sprog.


Ovenstående udklip er ikke afprøvet, og kan således indeholde
tanketorsk, som jeg dog er sikker på så nok skal blive udpeget .

Anders.


Footnotes:
[1] Eller hvilket tegnsæt computeren nu benytter.


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste