- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 5 von 5

Thema: Integer Variable in String einfügen

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    09.01.2005
    Alter
    41
    Beiträge
    76

    Integer Variable in String einfügen

    Anzeige

    E-Bike
    Hallo Zusammen,

    ich möchte gerne 16 verschiedene Files aus einer SD karte auslesen, diese Files unterscheiden sich nur in ihrem Namen an einer fortlaufenden Zahl.
    zb. "ROM1.txt", "ROM2.txt" usw.

    ich habe mir nun gedacht, dass ich eine for Schleife mache die von 1 bis 16 zählt und dass ich dann den Integer Wert in einen string umwandeln kann und den an den bestehenden String anhängen kann.

    z.b. so:
    Code:
    int i;
    char string[10];
    for(i=1;i<17;i++){
       sprintf(string,"%d",i);
       file_fopen(&file_r,&efs.myFs,"ROM"string".txt",'r')
    }
    nur geht das leider nicht so.

    Kann mir jemand helfen?
    Wie macht man dass richtig?

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Den String auf diese Weise anhängen geht nur mit statischen, konstanten Strings.C selbst hat keine Bordmittel zur Stringmanipulation wie zB Java.

    Am einfachsten und konfirtabelsten ist es , wenn du die Möglichkeit hast, die Dateien nicht durchzunumerieren, sondern durchzubuchstabieren:

    Code:
    char string[10] = "ROM_*.txt";
    
    void foo()
    {
       unsigned char i;
       for (i=0; i<16; i++)
       {
          string[4] = 'A' + i;
          file_fopen(&file_r,&efs.myFs, string, 'r')
       }
       ...
    }
    Disclaimer: none. Sue me.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    09.01.2005
    Alter
    41
    Beiträge
    76
    Danke SprinterSB,

    Ich habe deinen Ansatz übernommen und ein wenig abgeändert.
    wenn man
    string[4] = 0x30 + i;
    macht werden Zahlen an die 4.Stelle geschrieben weil 0x30 = '0' ist.

    Danke!

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Tipp: Du kannst direkt hinschreiben

    string[4] = '0' + i;

    ist was lesbarar
    Disclaimer: none. Sue me.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    09.05.2006
    Beiträge
    14
    Für das einfache Einfügen einer Ziffer sind die genannten Lösungen recht brauchbar und auch platzsparend. Wer will, hat in C aber auch mächtige Werkzeuge zur Stringmanipulation zu Verfügung, man muß sie nur benutzen können.
    Der richtige Einsatz von sprintf sieht hier so aus
    Code:
    unsigned int i;
    ...
    sprintf(string, "ROM%d.txt", i);
    Allerdings kostet sprintf relativ viel Speicher. Der Einsatz von utoa (macht Strings aus integer-Zahlen) und strcat (hängt strings aneinander) ist da manchmal geschickter.

    Servus
    Technikus

Berechtigungen

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

12V Akku bauen