Avatar billede nomak Nybegynder
06. maj 2003 - 18:49 Der er 14 kommentarer og
1 løsning

flytte tal fra char over til en int

Hey E!

kan ikke lige regne det her ud..

hvis vi siger jeg har en streng "6!!hejsa"

og jeg gerne vil have flyttet 6 tallet over til en int, hvordan skal jeg så bære mig ad?

håber ikk i blev forvirrede *G*
Avatar billede arne_v Ekspert
06. maj 2003 - 18:52 #1
char *s="6!!hejsa";
int i = s[0]-'0';
Avatar billede gumbert Nybegynder
06. maj 2003 - 18:52 #2
Ved du på forhånd hvad tallet er???
Avatar billede arne_v Ekspert
06. maj 2003 - 18:53 #3
Hvis der kan være mere end et ciffer skal du gøre noget andet.

F.eks. kopiere tallet alene over i enanden streng og så bruge atoi
til at konvertere til tal.
Avatar billede nomak Nybegynder
06. maj 2003 - 18:54 #4
nej.. tallet er skiftende, og kan være op til 4 tegn langt
Avatar billede nomak Nybegynder
06. maj 2003 - 18:55 #5
btw, det er c og ikke c++
Avatar billede arne_v Ekspert
06. maj 2003 - 18:57 #6
int i,val;
char buf[5];
char *s="123!!hejsa";
i=0;
while(isdigit(s[i])) {
  buf[i] = s[i];
  i++;
}
buf[i]='\0';
val = atoi(buf);
Avatar billede soreno Praktikant
06. maj 2003 - 18:57 #7
Kommer de tal i en række eller er de spredt i strengen ?

ksjldg1234slvs

eller

weg1we2gew3lfb4

?
Avatar billede nomak Nybegynder
06. maj 2003 - 19:08 #8
de kommer altid sådan
Avatar billede nomak Nybegynder
06. maj 2003 - 19:09 #9
altså som: "[et tal]!![en streng]"
Avatar billede arne_v Ekspert
06. maj 2003 - 19:10 #10
Så burde min sidste kode virke.

(hvis altså jeg har tastet rigtig)
Avatar billede tam Nybegynder
06. maj 2003 - 19:11 #11
int i = itoa(DinStreng);

itoa() afbryder når den måder en char som ikke er en digit...
Avatar billede arne_v Ekspert
06. maj 2003 - 19:12 #12
Det virker sgu:

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

int main()
{
  int i,val;
  char buf[5];
  char *s="123!!hejsa";
  i=0;
  while(isdigit(s[i])) {
    buf[i] = s[i];
    i++;
  }
  buf[i]='\0';
  val = atoi(buf);
  printf("%d\n",val);
}
Avatar billede arne_v Ekspert
06. maj 2003 - 19:13 #13
tam mener naturligvis atoi ikke itoa.
Avatar billede arne_v Ekspert
06. maj 2003 - 19:14 #14
Og det ser iøvrigt ud til at han har ret i at man slet ikke behøver en buffer:

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

int main()
{
  int val;
  char *s="123!!hejsa";
  val = atoi(buf);
  printf("%d\n",val);
}

skriver også 123 ud.
Avatar billede tam Nybegynder
06. maj 2003 - 19:20 #15
Oops, atoi() selvfølgelig... Det har du fuldstændig ret i...
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester