1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

int in char umwandeln?

  • sommeralex
  • 11. Juli 2005 um 10:13
  • Unerledigt
  • sommeralex
    11
    sommeralex
    Mitglied
    Punkte
    1.325
    Beiträge
    188
    • 11. Juli 2005 um 10:13
    • #1

    Hallo!

    Wie wandle ich ein int in ein char, und umgekehrt in C, um? (OS Windows)
    In google findet sich eine atoi funktion, die aber nicht funktioniert. Außerdem beziehen sich die meisten google Ergebnisse auf die umwandlung innerhalb einer printf - funktion.

    lg alex

  • gelbasack
    25
    gelbasack
    Mitglied
    Reaktionen
    90
    Punkte
    6.525
    Beiträge
    1.241
    • 11. Juli 2005 um 10:17
    • #2

    Ich hoffe, ich übersehe da keine Bibliotheksfunktion, mir ist aber keine bekannt.
    Du kannst ohnehin nur die Ziffern 0-9 in char umwandeln. Du könntest also den ASCII-Wert für '0' nehmen und einfach deine Zahl addieren (aufpassen, dass der int nicht größer als 9 ist), dann hast ein char.

  • sommeralex
    11
    sommeralex
    Mitglied
    Punkte
    1.325
    Beiträge
    188
    • 11. Juli 2005 um 10:20
    • #3

    char intToChar(int integer)
    {
    return (char)integer+48;
    }

    geht leider nur dann, wenn int < 10

    außerdem benötige ich auch noch char to int..

  • sommeralex
    11
    sommeralex
    Mitglied
    Punkte
    1.325
    Beiträge
    188
    • 11. Juli 2005 um 10:23
    • #4

    danke, aber die funktion soll jedes beliebige int in ein char, und jedes beliebige char in ein int umwandeln. das kann ja nicht so schwer sein, oder? in java ist es ziemlich einfach..

  • sommeralex
    11
    sommeralex
    Mitglied
    Punkte
    1.325
    Beiträge
    188
    • 11. Juli 2005 um 10:28
    • #5

    natürlich meine ich:

    int in ein char-array sowie:

    char-array in ein int

  • seg2
    8
    seg2
    Mitglied
    Punkte
    655
    Beiträge
    102
    • 11. Juli 2005 um 10:28
    • #6

    Du könntest die Funktion itoa(int, array, base) verwenden, nur dass du halt ein einstelliges Array verwendest...

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 11. Juli 2005 um 10:30
    • #7

    char to int kann folgendes heißen:

    • Zwischen einer (!) Dezimaliffer und der dazugehörigen Zahl soll konvertiert werden, also '0' <-> 0, ..., '9' <-> 9. (Dafür einfach '0' addieren oder subtrahieren.)
    • Zwischen einem String (!), der eine Zahl in dezimaler (oder sonstiger) Darstellung codiert, soll konvertiert werden, also etwa "123" <-> 123. (Für die eine Richtung gibt es sprintf und Freunde, für die andere strtol und Freunde.)
    • Zwischen einem Zeichen und dem (ASCII-)Zeichencode dieses Zeichens soll umgewandelt werden, z.B. '0' <-> 48. (Dafür gibt es einfache Zuweisungen.)


    Eventuell lassen sich auch andere plausible Interpretationen von "char to int" finden. Ist deine gewünschte dabei? Falls nicht, bitte näher und mit Beispielen erläutern.

    Edit: OK, es ist also offenbar der zweite Punkt gemeint. Nimm die erwähnten Bibliotheksfunktionen; itoa ist nicht Standard und wird nicht auf allen Plattformen zur Verfügung stehen.

    *plantsch*

  • MaxAuthority
    17
    MaxAuthority
    Gewinner des Desktop-Contest 2002
    Reaktionen
    5
    Punkte
    3.165
    Beiträge
    626
    • 12. Juli 2005 um 14:02
    • #8

    aeh, denken alle zu kompliziert oder willst du einfach nur das machen:

    int i = 42;
    char c = (char)i;
    i = (int)c;

    Sollte - teilweise - aber eh implizit vom compiler gemacht werden, dass: i = c; auch klappen sollte.

    EDIT: aso, wenn wirklcih int-> char* gemeint ist, dann mach ich es meist mit sprintf(buf, "%d", int_var); aber weiss nicht wie weniger effizient wie itoa es ist.

    http://vimperator.org - Make Firefox behave like Vim

  • michi204
    26
    michi204
    Mitglied
    Reaktionen
    63
    Punkte
    7.268
    Beiträge
    1.318
    • 12. Juli 2005 um 16:05
    • #9
    Zitat von sommeralex

    Wie wandle ich ein int in ein char, und umgekehrt in C, um? (OS Windows) In google findet sich eine atoi funktion, die aber nicht funktioniert.

    inwiefern funktioniert sie nicht? ich bin sicher, die funktionen in der c-library funktionieren alle recht gut :winking_face:

    für integer -> string würde ich snprintf verwenden:

    C
    #include <stdlib.h>
    #include <stdio.h>
    ...
    int i=5;
    char buffer [255];
    snprintf (buffer, [color=Red](size_t)255, [/color]"%d", i);

    (eigentlich sollte man hier noch den rückgabewert prüfen, denn sonst könnte es bei zu vielen eingabezeichen sein, dass das abschließende \0 fehlt)

    für string-> integer:

    Code
    #include <stdlib.h>
    ...
    const char* szText = "2";
    int i = strtol (szText, (char*)0, 10);

    lg michi

  • hal
    32
    hal
    Mitglied
    Reaktionen
    52
    Punkte
    11.122
    Beiträge
    2.208
    • 12. Juli 2005 um 21:51
    • #10
    Zitat von MaxAuthority

    aso, wenn wirklcih int-> char* gemeint ist, dann mach ich es meist mit sprintf(buf, "%d", int_var); aber weiss nicht wie weniger effizient wie itoa es ist.

    uje uje, solltest unbedingt snprintf verwenden!
    ahja, und der syntax ist snprintf(char * str, size_t size, const char * format, ...);, also net die size vergessen :)

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • MaxAuthority
    17
    MaxAuthority
    Gewinner des Desktop-Contest 2002
    Reaktionen
    5
    Punkte
    3.165
    Beiträge
    626
    • 12. Juli 2005 um 21:57
    • #11

    hal: jaja, du besserwisser :)

    Da die meisten den buffer ja eh zumindest 256 bytes gross machen, soll das ja kein problem wegen der size geben.

    http://vimperator.org - Make Firefox behave like Vim

  • michi204
    26
    michi204
    Mitglied
    Reaktionen
    63
    Punkte
    7.268
    Beiträge
    1.318
    • 12. Juli 2005 um 23:10
    • #12
    Zitat von hal

    uje uje, solltest unbedingt snprintf verwenden!
    ahja, und der syntax ist snprintf(char * str, size_t size, const char * format, ...);, also net die size vergessen :)

    danke, habs ausgebessert..

    lg michi

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung