Anzeige:
Ergebnis 1 bis 2 von 2

Thema: Speicherbelegungs Problem beim Umdrehen von unsigned int Zahlensträngen.

  1. #1
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255

    Speicherbelegungs Problem beim Umdrehen von unsigned int Zahlensträngen.

    Ich bin gerade beim C Lernen auf ein Problem gestoßen wo ich nicht weiß wie ich mein Programm korrekt umsetze.

    Ich versuche einen unsigned int MAX als String zu behandeln diesen dann um zu drehen und wieder nach unsigned int zu Konvertieren.

    Jedoch stoße ich hier auf zwei Probleme.
    Wie kann ich die Speicherbelegung so festlegen das sprintf sauber Arbeitet?
    Und wie kann ich mit atoi() eine String nach unsigned int Konvertieren?
    PHP-Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <limits.h>

    /**
    #define MAX_BUFFER  UCHAR_MAX
    Ergebnis:
    4294967295
    N=�5927694924
    0
    */

    #define MAX_BUFFER  UCHAR_MAX * sizeof(unsigned int)
    /*
    Ergebnis:
    4294967295
    5927694924
    0
    */

    unsigned int reverse_numericunsigned int i )
    {
      
    char buf[MAX_BUFFER];
      
    unsigned int out 0;
      
    unsigned int rn;

      if ( 
    )
        return 
    0;

      for (
    rn irn >= 1rn/=10)
      {
          
    sprintf(buf,"%s%u",buf,(rn%10));
      }
      
    printf("%s\n"buf);
      
    out atoi(buf);
      
    printf("%d\n",out);
      return 
    0;
    //   return out;
    }

    int main(void)
    {
    //   unsigned int start = 10061967;
      
    unsigned int start UINT_MAX;
      
    printf("%u\n",start);
      
    reverse_numeric(start);
      return 
    0;

    Code:
    gcc -g -pedantic -fstack-protector -Wall -W -Wextra \ 
     -Wunused -Wstrict-prototypes -Wstack-protector -Wbad-function-cast \
     reverse_numeric.c -o reverse_numeric
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Wenn du über den String gehen musst, dann würde ich die Ausgangszahl gleich ganz mit sprintf in den String schreiben, dann den String umdrehen und dann wieder mit sscanf auslesen.

    Ansonsten kannst du ja die Resultatszahl direkt beim Umdrehen berechnen.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •