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*
Annonceindlæg fra Conscia
char *s="6!!hejsa"; int i = s[0]-'0';
Ved du på forhånd hvad tallet er???
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.
nej.. tallet er skiftende, og kan være op til 4 tegn langt
btw, det er c og ikke c++
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);
Kommer de tal i en række eller er de spredt i strengen ? ksjldg1234slvs eller weg1we2gew3lfb4 ?
altså som: "[et tal]!![en streng]"
Så burde min sidste kode virke. (hvis altså jeg har tastet rigtig)
int i = itoa(DinStreng); itoa() afbryder når den måder en char som ikke er en digit...
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); }
tam mener naturligvis atoi ikke itoa.
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.
Oops, atoi() selvfølgelig... Det har du fuldstændig ret i...
Kurser inden for grundlæggende programmering