Buchstaben eines Strings in ein Array kopieren



  • Hallo liebe C - Gemeinschaft;

    also im Titel ist eh schon fast alles gesagt; ich möchte gerne mein argv[1] von der Kommandozeile in eine 2d array kopieren; und halt so, das der erste buchstabe auf 0,0 ist der zweite auf 0,1 und so weiter!



  • Ja dann mach das doch.

    Oder gibt es ein Problem dabei? Dann solltest du das vielleicht etwas näher beschreiben.



  • das erste problem ich weiß nicht wie?

    mein code dafür schaut so aus:

    for (y = 0; y < rows; y++)
        {
            for (x = 0; x < slots; x++);  
            {
                for (i = 0; i < argv[1]; i++)
                {   
                    matrix[y][x] = (argv[1][i]);
                             //if (i ==(rows - 1))
                             //{
                             //y++;
                             //x = 0;
                             //}
    


  • argv[1] ist 1D. Da brauchst du keine zwei Schleifen.
    Zudem gibt es dafür schon fertige Funktionen.

    Und zu einem Beispiel gehören auch dei Variablendefinitionen. (mal abgesehen von argv von main )



  • Auch keine drei Schleifen.



  • ich weiß das argv 1d ist aber ich muss eine 2d matrix erstellen in dem argv[1] an erster stelle steht und dann das restliche alphabet!

    ich muss nämlich ein playfair chiffre programm schreiben, hab aber da problem mit der matrix!

    ich schaff es einfach nicht diese aufzufüllen!



  • Heinzi1991 schrieb:

    for (i = 0; i < argv[1]; i++)
                {  
                    matrix[y][x] = (argv[1][i]);
    

    Mal abgesehen davon, das i < argv[1] nicht funktioniert (soll das die Länge von argv[1] ergeben?), schreibst du in dieser schleife ja immmer an die selbe Stelle von matrix.

    An die Admins: führende Leerzeichen (erste Zeile) im Codetag funktionieren noch nicht.



  • und wie kann ich mein problem jetzt beheben?



  • Nimm ein Blatt Papier und mal dein Problem auf.

    Du hast ein 1D Array mit deinem Text aus argv[1] und dein 2D-Array (5x5 laut wikipedia)
    Wie kommst du jetzt von x und y auf die Feldnummer:

    .  0  1  2  3  4  x
    0  0  1  2  3  4 
    1  5  6  7  8  9 
    2 10 11 12 ...
    3
    4  ...        25
    y
    

    Also x =3 und y =1 -> 8
    Diese Feldnummer wäre der 2. Index bei argv[1].

    Das

    Heinzi1991 schrieb:

    und wie kann ich mein problem jetzt beheben?

    klingt etwas genervt. 😞



  • int main(int argc,char**argv)
    {
      const char **a=argv+1;
      int i;
    
      for(i=0;a[0][i]!='\0';++i)
        putchar(a[0][i]);
    
      return 0;
    }
    


  • tut mir leid das es so rüber kommt als wäre ich genervt, aber ich sitz schon seit 4 tagen dabei und komm nicht weiter und morgen muss ich es fertig haben!

    und wie kann ich dann eine formel schreiben, damit ich zu den koordinaten komme?



  • ich glaub putchar darf ich nicht verwenden!
    bin mir sogar sehr sicher!



  • Wrong code!!!



  • Heinzi1991 schrieb:

    und wie kann ich dann eine formel schreiben, damit ich zu den koordinaten komme?

    Das ist eine Rechnung mit Zeilenlänge (also 5) und den x und y Werten.
    "Das eine (x bzw y) mal Zeilenlänge plus das andere (y bzw x)." Selber rausfinden.

    Wenn du matrix so als 2D Array definiert hast:

    char matrix[5][5];
    

    geht das auch mit strcpy bzw. besser strncpy.



  • Ah, ok, jetzt nur ein 1D Array. Dann erst recht mit strncpy 🙂

    Aber bei:

    elements_key = strlen(argv[1]);
        j = 0;
    
        for (i = 0; i < elements_key; i++)
        {
            if (elements_key <= 122 && elements_key >= 97)
            elements_key - 32;
            if (elements_key == 'J')
            elements_key = 'I';
            elements_key = strchr (letter, elements_key) - letter;
            if (alphabet[k] != -1)
            continue;
            alphabet[k] = j;
            keycopy[j++] = letter[k];
        }
    

    bringst du einiges durcheinander.
    elements_key ist die Länge deiner Eingabe und nicht die Eingabe.
    i ist der Index.
    Dann ist argv[i] der aktuelle Buchstabe. (und nicht elements_key)
    Zur Umwandlung in Grossbuchstaben, schau dir mal toupper aus <ctype.h> an

    Was soll k? Das wird gar nicht geändert.



  • sorry dirk b aber ich verstehe dich nicht; du musst mit mir reden als wäre ich ein kleinkind!



  • sorry der letzte code war von einem programmierer da kenn ich mich selbst nicht so richtig aus!
    ich bleib bei meinem 2d array! und mit deiner rechnung die ich noch nicht kapiere!


Log in to reply