Char Feld und integer



  • Hallo zusammen,
    ich habe folgendes Problem.
    Hab ein char-feld: feld[1] und eine int zahl.
    Inhalt dieses Feldes ist: feld[0]=8
    feld[1]=4

    Wie kann ich nun das gesamte Feld in eine Integer-Variable schreiben.
    Wenn ich zum Beispiel:

    zahl=(feld[0]-48) schreibe ist ja nur die 8 drin. Möchte aber die 84 in der Integer-Variablen stehen haben.

    Könnt ihr mir helfen?

    Vielen Dank und viele Grüße



  • Ich hoffe mal ich habe verstanden was zu willst, meinst du

    char feld[] = "84";
    int zahl = atoi(feld);
    printf("%d",zahl);
    

    ?



  • hab es nun mal mit atoi Funktion versucht, und es wird 0 in die Variable geschrieben!?
    Ich glaube schon das du das richtige meinst. Muss ich vielleicht noch eine #include schreiben?

    Danke...



  • Poste mal deinen code!



  • Das kann nicht sein. atoi arbeitet fehlerfrei, hast du feld so gefüllt wie angegeben?



  • class datum{
    private:
    char tag[1];
    char monat[1];
    char jahr[1];
    int day,month,year;
    int temp;

    public:
    datum(char feld[]){
    for(int i=0;i<=1;i++){
    tag[i]=feld[i];
    }
    for(int i=3;i<=4;i++){
    monat[i]=feld[i];
    }
    for(int i=8;i<=9;i++){
    jahr[i]=feld[i];
    }
    }

    int rueckJahr(){
    year=atoi(jahr);
    return year;
    }
    int rueckMonat(){

    return month;
    }
    int rueckTag(){

    return day;
    }

    int pruef2(char feld[]){

    }

    };

    int main()
    {
    char a[10], b[10], c[10], e[2];

    cout << "Gib dein Geburtsdatum ein: " << '\t';
    gets(c);

    datum Geburtsdatum(c);
    Geburtsdatum.gibFelder();

    system("PAUSE");
    return 0;
    }



  • #include <cstdlib>
    #include <iostream>
    #include <string.h>

    using namespace std;

    class datum{
    private:
    char tag[1];
    char monat[1];
    char jahr[1];
    int day,month,year;

    public:
    datum(char feld[]){
    for(int i=0;i<=1;i++){
    tag[i]=feld[i];
    }
    for(int i=3;i<=4;i++){
    monat[i]=feld[i];
    }
    for(int i=8;i<=9;i++){
    jahr[i]=feld[i];
    }
    }

    int rueckJahr(){
    year=atoi(jahr);
    return year;
    }
    int rueckMonat(){

    return month;
    }
    int rueckTag(){

    return day;
    }
    };

    int main(){
    char a[10], b[10], c[10], e[2];

    cout << "Gib dein Geburtsdatum ein: " << '\t';
    gets(c);

    datum Geburtsdatum(c);
    cout << Geburtsdatum.rueckJahr();

    system("PAUSE");
    return 0;
    }



  • Das wird so nix. Benutze mal den C/C++ Tag für deinen Code.
    tag,monat,jahr sind zu gering dimensioniert., also mind.

    char tag[3], monat[3], jahr[3];
    

    und die Zuweisung ist auch falsch,
    also z.B.

    sprintf( tag,   "%.2s", feld+0 );
    sprintf( monat, "%.2s", feld+2 );
    sprintf( jahr,  "%.2s", feld+4 );
    

    ist aber C und kein C++.



  • Das erste was du geschrieben hast hab ich geändert.
    Aber die zweite Änderung versteh ich nicht ganz.



  • sprintf( tag,   "%.2s", feld+0 );
    

    führt durch:
    feld[0]->tag[0]
    feld[1]->tag[1]
    tag[2]='\0';

    sprintf( monat, "%.2s", feld+2 );
    

    führt durch:
    feld[2]->monat[0]
    feld[3]->monat[1]
    monat[2]='\0';

    usw.


Anmelden zum Antworten