Buchstaben eines Strings in ein Array kopieren



  • 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!


Anmelden zum Antworten