www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik String in Array reinschreiben


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
würde mich freuen wenn mir hier einer helfen könnte.:
Ich habe folgendes Problem.
Ich möchte mehrere Telefonnummern (Handynummern) in ein Array speichern.
Programmiersprache ist C.
Da diese Nummern ja sehr lang sind weiß ich nicht wie ich das anstellen 
soll. Komme einfach nicht zum Ziel:

unter anderem habe ich es mit folgenden Zeilen probiert.

char Number[30];
Nummer[0] = "+49....";



Für einen Tipp wäre ich dankbar!
Gruß Thomas

Autor: moehrlin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dabei kommt folgendes raus wenn du es so machst:
Nummer[0]=+
Nummer[1]=4
Nummer[2]=9
Nummer[3]=1
Nummer[4]=6

...

Autor: moehrlin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
benutz doch nen mehrdimensionales array:

array[30][0]
array[30][0]

Autor: haikar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So in etwa würde ich das machen:

char* NummernTabelle[] = {
 "+494353453",
 "+494345",
 "+494345345345",
};

#define ANZAHL_NUMMERN 
(sizeof(NummernTabelle)/sizeof(NummernTabelle[0]))

...

printf("Nummer 2: %s\n", NummernTabelle[2]);

Autor: Thorsten Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
unsigned int anzahl=2;
char** nummern = (char**)malloc(sizeof(char*)*anzahl);

nummern[0]=calloc(sizeof(char),25);
sprintf(nummern[0],"+49 123 4556");

so oder so ähnlich

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
haikar wrote:

> ...
>
> printf("Nummer 2: %s\n", NummernTabelle[2]);

printf("Nummer 3: %s\n", NummernTabelle[2]);


Informatiker am Bahnhof:
  "0...1...2... WO IST MEIN DRITTER KOFFER???"

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun... ist des nich ein ziemlich hartes Stück direkt mit Pointern und 
dem Heap aufzuwarten wenner ne Frage zu Arrays hat?!

Wenn du deine Nummern zur Laufzeit eingeben willst würde ich dir, der 
Übersicht-wegen sogar ein Array aus Strukturvariablen empfehlen :)

so kannst du dann Vorwahl(01XX) und eigentliche Nummer getrennt 
speichern und später, solltest du das vorhaben, einfacher nach Provider 
etc ordnen. Aber... erstmal das Grundgerüst.

Ein Beispiel zur Variablen Deklaration und Zuweisen zur Laufzeit wäre 
z.B. folgendes:
#define GEWUENSCHTE_ANZAHL 20
/*in diesem Makro kannst du vorher die gewünschte Anzahl an verfügbaren
Handynummer eingeben - ist für den Anfang wahrscheinlich leichter als
dynamische Speicher zu verwenden, die 20 einfach nach belieben austauschen*/


struct Handynummern {                 //Hier erstellst du eine Variable
    int vorwahl;                      //mit zwei subvariablen vom Typ
    int hauptnummer;                  //Integer - sollte für die Nummern
    } die_nummer[GEWUENSCHTE_ANZAHL]; //ausreichen - wenn du, was das
                                      //was das genutzte Forum indiziert,
//einen mC benutzt, musst du stattdessen 32bit Integer benutzen. Die Zeile
// ' die_nummer[GEWUENSCHTE_ANZAHL] ' stellt dir jetzt die Variable 
//"die_nummer" mit 20 möglichen Nummer zur Verfügung (du merkst, hier wird
//mit arrays gearbeitet


int main() {
    int i;
    for(i=0;i<GEWUENSCHTE_ANZAHL;i++) {

//ich denke mit for-schleifen kannst du was anfangen, wenn nich einfach
//fragen

        printf("Telefonnummer %d so eingeben: 01XX/54XXXXXX\n",i+1);
        scanf("%d/%d",&die_nummer[i].vorwahl,&die_nummer[i].hauptnummer);

//"scanf" ist jetzt sozusagen das wichtigste. Du sagst dem Programm das es
//die eingebene Nummer an der Stelle des "/" aufspalten und in die 
//Subvariablen von "die_nummer" speichern soll. "  i  " ist in dem Fall 
//halt die -  vom Zähler der Schleife abhängige - Stelle von "die_nummer"

    }
    //hier kannste dann mit den Nummer machen was du willst, z.B. ordnen
}

vom Grundprinzip ist das zumindest der Quelltext für eine Ansi-C 
Konsolenanwendung. Ich nehme mal an dass du sowas auch programmieren 
wolltest, auch wenn das hier das Forum für mC uns Elektronik ist...

Hoffe ich konnte helfen, bis dann

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.