/ 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
indtast med tegn og tal
Fra : Martin


Dato : 15-08-04 18:51

TurboC++
Når jeg vil have en indtastning med tegn og tal går det galt. Det viser
noget volapyk som om variablen er forkert.
Hvad skal jeg erklære tegn og tal til, andet end det her?
char navn;
int tal;
printf("indstast gadenavn og husnr."); //(for eksempel)
scanf(%s %c",navn,tal);

Mvh.

Martin



 
 
Bertel Brander (15-08-2004)
Kommentar
Fra : Bertel Brander


Dato : 15-08-04 19:10

Martin wrote:

> TurboC++
> Når jeg vil have en indtastning med tegn og tal går det galt. Det viser
> noget volapyk som om variablen er forkert.
> Hvad skal jeg erklære tegn og tal til, andet end det her?
> char navn;
> int tal;
> printf("indstast gadenavn og husnr."); //(for eksempel)
> scanf(%s %c",navn,tal);
>

#include <stdio.h>

int main(void)
{
char navn[256];
int tal;
scanf("%s %d", navn, &tal);
printf("[%s] - %d\n", navn, tal);
return 0;
}

Det er lidt uklart om du ønsker at det andet argument skal være
en char eller en int, ovenfor er det en int.

Der findes ca. 12000000 grunde til at undlade at bruge scanf, og
kun en til at bruge den: dovenskab.

/b

Bertel Brander (15-08-2004)
Kommentar
Fra : Bertel Brander


Dato : 15-08-04 20:01

Bertel Brander wrote:
> Der findes ca. 12000000 grunde til at undlade at bruge scanf, og
> kun en til at bruge den: dovenskab.
>

Se f.ex:
http://www.eskimo.com/~scs/C-faq/q12.20.html

/b

Martin (15-08-2004)
Kommentar
Fra : Martin


Dato : 15-08-04 21:41



"Bertel Brander" <bertel@post4.tele.dk> skrev i en meddelelse
news:411fb2e4$0$198$edfadb0f@dread11.news.tele.dk...
> Bertel Brander wrote:
> > Der findes ca. 12000000 grunde til at undlade at bruge scanf, og
> > kun en til at bruge den: dovenskab.
> >
>
> Se f.ex:
> http://www.eskimo.com/~scs/C-faq/q12.20.html
>
> /b


Tak !
Det skal bruges til at modtage et tal hvor man angiver præfiks for at skrive
det kortere. f.eks. 2.0K eller 3.4M.

Mvh.
Martin



Bertel Brander (15-08-2004)
Kommentar
Fra : Bertel Brander


Dato : 15-08-04 22:10

Martin wrote:
> Tak !
> Det skal bruges til at modtage et tal hvor man angiver præfiks for at skrive
> det kortere. f.eks. 2.0K eller 3.4M.
>

I så fald, hvis du absolut vil bruge scanf:

#include <stdio.h>

int main(void)
{
double d;
char ch;
scanf("%lf%c", &d, &ch);
printf("[%f] - %c\n", d, ch);
return 0;
}

/b

Bertel Brander (15-08-2004)
Kommentar
Fra : Bertel Brander


Dato : 15-08-04 22:33

Bertel Brander wrote:

> Martin wrote:
>
>> Tak !
>> Det skal bruges til at modtage et tal hvor man angiver præfiks for at
>> skrive
>> det kortere. f.eks. 2.0K eller 3.4M.
>>
Man kunne også lave en pænere version.
Husk at tilføje et check på om strtod raporterer en fejl.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void Get(double *d, char *ch)
{
char Line[128], Temp[128], *s, i;
fgets(Line, sizeof(Line), stdin);

for(i = 0, s = Line; strchr("0123456789.", *s); s++, i++)
Temp[i] = *s;
Temp[i] = 0;
*d = strtod(Temp, 0);
if(strchr("KMmk", *s))
*ch = *s;
else
*ch = 0;
}

int main(void)
{
double d;
char ch;
printf("Write:");
fflush(stdout);
Get(&d, &ch);

printf("%f %c\n", d, ch == 0 ? '-' : ch);

return 0;
}

/b

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408176
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste