Kurz davor zu explodieren



  • Hallo Leute,

    ich bin echt kurz davor zu explodieren und durchzudrehen.

    Ich hocke jetzt 4 Stunden an einer primitiven FOR-Schleife (!!!!) und komm ned weiter.
    Wenn ich ned check wie das geht tu ich ma echt was an.

    Alles was ich will is jedes dritte Element in ein weiteres array eingeben.

    [cpp]#include <stdio.h>
    #include <time.h>
    #include<stdlib.h>
    int main ()

    {

    int i=0, y=0, x=3,v=1;
    char array[30],array_2[30];

    for (;i<=30;i++)

    {
    array[i]=0;
    }

    for (;i<=30;i++)

    {
    array_2[i]=0;
    }

    scanf ("%s", &array);
    printf ("%s\n", array);

    for (i=0; i<=15;i++,y=y+3)

    { array_2[i]=array[y];
    printf ("%c", array_2[i]);

    }

    return 0; }
    [cpp]

    obwohl ich ALLES mit 0 intialisiert habe, kommen dann ur scheiss Zeichen 😡 😡 😡

    Ich weiss nimma weita ich mein ich scheiss schon so drauf.
    Ich mein sowas sollte innerhalb von ein paar minuten gschrieben worden sein.



  • for (;i<=30;i++)

    mach da mal

    for (;i<30;i++)
    

    draus.

    for (i=0; i<=15;i++,y=y+3)

    hmm...
    am ende ist da dann i=15 und y=45..glaub da sollte es auch zu Problemen kommen, weil array irgentwie nur 30 elemente hat...



  • Ich compilier das jetzt nicht. Und mit Code-Tags wäre es übersichtlicher.

    Aber mach erstmal das richtig:

    exploding schrieb:

    scanf ("%s", &array);
    printf ("%s\n", array);
    
    printf ("%c", array_2[i]);
    

    %c ist für Character, %s für Strings. Du hast int-Arrays ...



  • Okay, du hast keine int-Arrays.

    Aber wenn du ein Array mit charactern hast, und printf mit %c aufrufst, gibt er dir nicht die Zahlen von 0-127 aus, wie du vielleicht denkst.
    Er gibt dir das ASCII Zeichen, dass diesen Code hat.



  • machs so

    #include <stdio.h> 
    #include<stdlib.h> 
    
    int main () 
    { 
        int i = 0, y = 0; 
        char array[30], array_2[30]; 
    
            for (i = 0; i < 30; i++) {
                    array[i]=0; 
                    array_2[i]=0; 
            } 
            scanf ("%s", &array); 
            printf ("%s\n", array); 
    
            for (i=0; i < 30; i++)   
                    if (i&&!(i%3))  
                    {       // gibt jedes dritte char aus
                            array_2[y] = array[i-1]; 
                            printf ("%c", array_2[y]); 
                            y++;
                    }
            return 0; 
    }
    

    💡



  • exploding schrieb:

    #include <stdio.h>
    #include <time.h>
    #include<stdlib.h>
    int main ()
    {
    
    int i=0, y=0, x=3,v=1;
    char array[30],array_2[30]; 
    
    for (;i<=30;i++)
    {
    array[i]=0;
    }
    
    for (;i<=30;i++)
    {
    array_2[i]=0;
    }
    
    scanf ("%s", &array);
    printf ("%s\n", array);
    
    for (i=0; i<=15;i++,y=y+3)
    
    { array_2[i]=array[y];
    printf ("%c", array_2[i]);
    
    }
    
    return 0; }
    

    obwohl ich ALLES mit 0 intialisiert habe, kommen dann ur scheiss Zeichen 😡 😡 😡

    Ich weiss nimma weita ich mein ich scheiss schon so drauf.
    Ich mein sowas sollte innerhalb von ein paar minuten gschrieben worden sein.

    Es ist richtig, dass Du alles mit 0 initialisiert hast - allerdings nur am
    Anfang der Funktion. Die Variable i steht nach der 1.Schleife auf 31 und
    wird nicht wieder zurückgesetzt. Natürlich steht i dann auch am Anfang der
    2.Schleife auf 31.

    Wieso schreibst Du bei scanf eigentlich &array. scanf erwartet eine Adresse.
    ein Array ist - besser zeigt - auf die Adresse des ersten Elements eines
    Arrays. Wenn Du &array schreibst, übergibst Du die Adresse des Zeigers bzw.
    des Array-Zeigers anstatt die Adresse worauf er zeigt.


Anmelden zum Antworten