Avatar billede lequet Nybegynder
30. juni 2002 - 23:12 Der er 12 kommentarer og
1 løsning

Char til int

Hej, har et lille problem...

Hvis jeg har denne lille eksempel-kode :

char noget[3] ;

og jeg på forhånd ved at den altid vil komme til at indeholde et tal på højest 2 cifre, men ikke har mulighed for at bruge int istedet for char, fra starten...

Hvordan får jeg den så "flyttet" til f.eks.

int etTal ;

Håber det er til at forstå, for ved ikke hvordan jeg ellers skal forklare det :(
Avatar billede orca Nybegynder
30. juni 2002 - 23:14 #1
Det er virkelig evigheder siden jeg har leget med C, og jeg kan sq ikke huske meget. Men kan man ikke bruge noget med (int)noget  ?

Mvh Mark
Avatar billede lequet Nybegynder
30. juni 2002 - 23:21 #2
Hmm, heller ikke så tit jeg roder med det, så når jeg gør foregår det med en bog i den ene hånd og tastaturet i den anden :)

Det lader ikke til det virker helt efter hensigten, nu giver den ingen fejl, men tilgengæld bliver det et helt forkert tal :( I får lige lidt kode så i kan se hvad jeg mener, ved godt det ikke er den nydeligste kode, men hvad faen :)

struct level {
  int x ;
  int y ;
} bane ;

void getLevel(int lvl) {   
    ifstream dataFile("level0.lvl") ;
   
    char x[3] ;
    char y[3] ;
   
    dataFile.getline(x, sizeof(x)) ;
    dataFile.getline(y, sizeof(y)) ;
   
    bane.x = (int)x ;
    bane.y = (int)y ;
}
Avatar billede orca Nybegynder
30. juni 2002 - 23:25 #3
Hmm, jeg har desværre ikke lige en C++ compiler i nærheden, så jeg har lidt svært ved at teste det. Prøv evt med (float)x

Mvh Mark
Avatar billede lequet Nybegynder
30. juni 2002 - 23:27 #4
Giver følgende 2 fejl

pointer value used where a floating point value was expected
[Warning] assignment to `int' from `float'
Avatar billede orca Nybegynder
30. juni 2002 - 23:37 #5
Og det er når du indsætter koden således: bane.x = (float)x;?

Tror desværre min meget lille viden om C++ er for lille :). Jeg holder mig til ASP(.NET)
Avatar billede lequet Nybegynder
30. juni 2002 - 23:38 #6
Ja, ændrede blot fra int til float

:) Hvad man ikke ved kan man lære
Avatar billede mbulow Nybegynder
30. juni 2002 - 23:53 #7
Brug denne funktion:
  int atoi(const char *string);
Den er der til netop det formål formål :)

Altså:
etTal = atoi(noget);
Avatar billede lequet Nybegynder
30. juni 2002 - 23:57 #8
PERFEKT :) Takker mange gange

Et lille lynhurtigt side spm... Hvordan kan jeg sammensætte 2 strenge til en altså

char tekst[64] = "noget" + "noget andet" ; <-- Virker ikke, men hvordan :)
Avatar billede medions Nybegynder
01. juli 2002 - 00:00 #9
Tror det er fordi du skal bruge & tegnet...
char tekst[64] = "noget" & "noget andet";

//>Rune
Avatar billede lequet Nybegynder
01. juli 2002 - 00:04 #10
Næe, og det er heller ikke . (plus) som det er i PHP :(
Avatar billede lequet Nybegynder
01. juli 2002 - 00:04 #11
Ups, punktum selvfølgelig :)
Avatar billede mbulow Nybegynder
01. juli 2002 - 02:22 #12
Til at sammensætte to strenge (char-arrays) kan du bruge:
char *strcat(char *strDestination, const char *strSource);

Her skal du bare være sikker på at strDestination er stor nok til at kunne udvides med strSource.


Din eksempel:
  char tekst[64] = "noget" & "noget andet";

Sådan her:
  char tekst[64];
  tekst[0] = '\0';
  strcat(tekst, "noget");
  strcat(tekst, "noget andet");


Grunden til at tekst[0] skal sættes til '\0', er at strcat indsætter strSource i enden af strDestination, og enden af en streng er repræsenteres med værdien '\0'
Avatar billede mbulow Nybegynder
01. juli 2002 - 02:25 #13
Kunne måske endda lidt pænere være skrevet:

char tekst[64];
strcpy(tekst, "noget");
strcat(tekst, "noget andet");

Bemærk forskellen... Den første strcat er blevet erstattet med en strcpy
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