01. januar 2004 - 15:35
Der er
12 kommentarer og 1 løsning
problemer med atoi
Hvorfor returnerer det her program bare "@"? #include <iostream.h> #include <stdlib.h> int main() { int i = 12; char line [2]; i = atoi(line); cout << line << endl; return 0; }
Annonceindlæg fra Netic
01. januar 2004 - 15:37
#1
Du udskriver en unitialiseret variabel line. Den kan indeholde hvad som helst !
01. januar 2004 - 15:38
#2
Jeg tror at du vil noget a la: #include <iostream.h> #include <stdlib.h> int main() { int i; char line [] = "12"; i = atoi(line); cout << i << endl; return 0; }
01. januar 2004 - 15:39
#3
Eller måske: #include <iostream.h> #include <stdio.h> int main() { int i = 12; char line [3]; sprintf(line,"%d",i); cout << line << endl; return 0; }
01. januar 2004 - 15:39
#4
Alt afhængig af hvad vej du vil konvertere.
01. januar 2004 - 15:40
#5
Tak arne. Du har snart svaret på alle mine spørgsmål... :-) Jeg skulle nok lige have tjekket programmet ordentligt først. Sådan er det vel at programmere dagen efter nytårsaften... :-) Læg et svar.
01. januar 2004 - 15:41
#6
Det var dit første program jeg skulle bruge.
01. januar 2004 - 15:42
#7
ok
01. januar 2004 - 15:44
#8
Men hvad nu hvis "line" måske er på seks cifre men jeg kun vil have de to første lagt ind i "i" og så de to næste i "i2" f.eks.?
01. januar 2004 - 15:48
#9
Hvis du er heldig at der er mellemrum imellem kan du f.eks.: int i1,i2; char line[] = "12 34"; sscanf(line,"%d %d",&i1,&i2);
01. januar 2004 - 15:49
#10
Hvis der ikke er mellemrum men ikke er mange cifre så kan du: int i,i1,i2,i3; char line[] = "123456"; i = atoi(line); i1 = i / 10000; i2 = (i / 100) % 100; i3 = i % 100;
01. januar 2004 - 15:53
#11
Eller så er der altid den grove metode: int i1,i2; char s1[3],s2[3]; char line[] = "1234"; strcpy(s2,line+2); strncpy(s1,line,2); s1[2] = '\0'; i1 = atoi(s1); i2 = atoi(s2);
01. januar 2004 - 15:53
#12
Der er rigtigt mange muligheder !
01. januar 2004 - 16:01
#13
Tak.
Kurser inden for grundlæggende programmering