C-Umwandlung von Char-Arrays (strings) in ein int-array
Ich habe die Suche rund um für Stunden für, aber ich kann nicht scheinen, um eine Antwort zu finden, vor allem, wenn es um die C-Sprache. In java wäre es einfach eine Frage des Castings und so, aber ich einfach nicht scheinen, um einen festen Griff auf Sie in C.
Mein problem ist: ich habe, um eine Eingabe von einem Benutzer, können Sie eine beliebige Anzahl von 0 bis 31. Sie können geben Sie bis zu 31 zahlen. Sie können sich wiederholen.
Die Eingabe könnte wie folgt Aussehen: 3 15 32. Ich weiß, wie nehmen Sie diese Eingabe, und speichern Sie es als string mit Hilfe der Funktion fgets () - Funktion. Ich Speichere die Eingabe in array s[];
Nun, der Teil, den ich am stecken, wie kann ich konvertieren, dass zu einem int-array int[0]=3, i[1]=15, i[2]=32 usw.
Versuchte ich mit sscanf(s, "%d", int), aber nur in der Lage ist, um die erste Zahl von der Eingabe, speichert es in int[0], und dann füllt nicht in Ruhe. Gibt es eine Art Funktion, dass macht das ganze einfach und schnell?
Vielen Dank im Voraus.
- Wenn es darauf ankommt, ich könnte einfach gehen durch jeden index des string-array und prüfen Sie die Ziffern und Leerzeichen umwandeln und es auf diese Weise, aber ich Frage mich, ob es ist ein einfacher und schneller Weg, wie so eine Funktion könnte ich nur verwenden.
- in der Regel verwenden Sie eine Funktion wie strtok zum Durchlaufen der Schnur und erhalten Sie jede Zahl in der Folge
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie overthinking Dinge. Hier ist ein einfacher Weg, um zahlen einzugeben, von einem Benutzer, der sich nicht um die Formatierung oder Analyse von strings.
Wird die Schleife beenden, wenn der Benutzer eine negative Zahl oder eingegeben hat, alle 31 möglichen zahlen.
Haben Sie immer noch, um sicherzustellen, dass der Benutzer eine Zahl zwischen 0 und 31 aber!
i
Elemente aus.[CTRL+d]
zu generierenEOF
. ([CTRL+z]
auf windoof), oder wenn Sie erreichen Ihre Grenze31
zahlen. (jetzt klappt es mit Bearbeiten...)scanf
zum Beispiel, ich glaube nicht, dass viele Leute dieses jenseits comp sci 101, die ich sicher noch nicht jedenfalls. Ich dachte, deine Antwort war gut, bis Marshall Mathers kam, bin ich mir nicht ganz sicher, was er immer an, ich habe zu tun einige googeln um es herauszufinden.Können Sie eine Bibliothek oder schreiben Sie eine Hilfsfunktion. Die Helfer-Funktion würde in etwa so Aussehen (pseudocode):
Zum Beispiel, wenn Sie haben, 253, es wird gelesen 2. Dann wird es multiplizieren Sie ihn mit 10 (20), und fügen Sie 5 (25). Es wird dann multiplizieren Sie diese mit 10 (250), und fügen Sie 3 ist die erwartete Ausgabe.
Beachten Sie, dass Sie müssen einen Weg finden, zu analysieren, ein einzelnes Zeichen aus der Zeichenfolge in einen single-stellige Zahl - das sollte sehr einfach sein, mit so etwas wie eine switch () - Anweisung.
BEARBEITEN:
Wenn Sie sich für eine library-Funktion, überprüfen Sie heraus diese Frage:
Was ist der Unterschied zwischen sscanf oder atoi konvertieren einen string in einen integer?
Es ist schon eine Weile her, seit ich gearbeitet habe, mit 'C', aber hier ist die grundlegende Idee. Konvertieren Sie das char-array die Werte zu ganzen zahlen, Sie haben im Grunde weisen Sie jeder Wert in eine int-var wie:
Der Grund, warum Sie nicht wirken kannst die Nummern direkt auf integer-Referenzen ist, weil C teilt einen zusammenhängenden Speicherbereich zu halten, diese 3 Zeichen. Je nach compiler, den Sie verwenden, wird bestimmen, char Größe und int-Größe. Aber wenn die chars sind 8 bit, dann ein array von 3 chars 3 bytes. 16-bit-int würde gleich 6 Bisse. Wenn Sie die Stimmen direkt zu ints, Sie würden nicht den richtigen Wert, übersetzungen, weil Speicher-Adressen überlappen würde.