|
| 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 |
| | |
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
| |
|
|