Array_Cut

I

iverson702

Grünschnabel
Hallo zusammen,
beim Ausführung folgender Code (Siehe unter), bekomme ich in meinem Array Liste char Liste[] = {1,21,333,433,54,12,33,45,56} den Wert 333 und 433 nicht auf dem Bildschirm gezeigt, sondern komische Werte.
1- Wie kann ich, wenn ich in der main-Methode die Position i und j initialisiert habe, genau die Werte an der Stelle i bis j bekommen. (z.B: Wenn ich int i=1 und j=5 initialisiere, dann sollte ich folgende Werte bekommen:
21 333 433 54 12 ?
2- Wie kann ich die Werte an der Stelle i bis j in einem Array speichern und diese dann später mit return ausgeben?

/* Array_Cut.c */
#include <stdio.h>
#include <stdlib.h>

int Start_Cut; //Anfangbereich
int End_Cut; //Endbereich
char GetArrayCut ( char *Buffer, int Start , int End)
{
int k = ( End - Start ) + 1;
char Ergebnis[k];
int i ;
for (i = Start ; i <= End; i++ )
Ergebnis = Buffer;
//return Ergebnis;
for (i = Start; i<= End; i++)
printf("%d ", Ergebnis);
printf ("\n");
}
int main ()
{
Liste char Liste[] = {1,21,333,433,54,12,33,45,56};
char i = 1 ;
char j = 4;
char *result = GetArrayCut ( Liste , i , j ) ;

}
Ween es möglich wäre, bitte schreibt der modifierte Code dazu.:(
Besten Dank.
 
Hallo,

ich kann dir nicht 100% helfen, aber vielleicht ist das ein Ansatz... Du speicherst 3 Buchstaben in einen char, da darf aber nur einer rein?

Du muesstest entweder jedes Zeichen einzeln speichern, oder strings benutzen...

Andrea
 
hi!

das erste problem bei der ausgabe am bildschirm ist ganz klar! ein char wert ist ein 1 byte wert in diesen passen nur werte von 0 bis 255! ansonsten fallen bits um!
bsp:
Code:
#include <stdio.h>

int main(void){
    char liste1B[] = {1,21,333,433,54,12,33,45,56}; /*ist ein array von 1byte werten (1byte = 0 ... 255)*/
    int liste4B[] = {1,21,333,433,54,12,33,45,56};/*ist ein array von 4byte werten (4byte = auf jeden fall genug platz :-)*/
    
    /*der test:*/
    /*ausgsbe der char liste als zahl*/
    int i;
    for(i = 0; i < sizeof(liste1B) / sizeof(char); i++)
        printf("%d ", liste1B[i]);
    printf("\n");

    /*ausgabe der int liste als zahl --- nun geht es*/
    for(i = 0; i < sizeof(liste4B) / sizeof(int); i++)
        printf("%d ", liste4B[i]);
    printf("\n");
}

fuerst du diesen code aus wirst du sehen dass es gehen wird!

weiters hab ich noch einige aenderungen an deinem code vollzogen! die rueckgabe zum bsp: in c kann man keine arrays zurueckgeben! und eine referenz auf einen array zurueckgeben ist schlecht da nach dem beenden der methode dieser speicherbereich zum ueberschreiben freigegeben wird!
weiters ist mich noch aufgefallen dass du in deinem ergebinsarray genauso reinschreibst wie du aus dem urspruenglichen liest das geht nicht da der ergebnisarray ja auch bei 0 anfaengt also musst du das auch beruecksichtigen!
bsp:
Code:
/* Array_Cut.c */
#include <stdio.h>
#include <stdlib.h>

int Start_Cut; //Anfangbereich
int End_Cut; //Endbereich

void GetArrayCut ( int *buffer, int *ergBuffer, int start , int end)
{
    int k = ( end - start );
    int i, b;
    for (i = start, b = 0; i <= end; i++, b++)
        ergBuffer[b] = buffer[i]; /*ergebnisarray faengt bei 0 an!!*/

    for (i = 0; i <= k; i++)
        printf("%d ", ergBuffer[i]);
    printf("\n");
}
int main ()
{
    int liste[] = {1,21,333,433,54,12,33,45,56};

    int i = 0;
    char start = 1 ;
    char end = 5;

    int result[ ((end-start)) ]; /*--> setze resultsize auf das maximal moegliche*/
    GetArrayCut ( liste, result, start , end ) ;
        
    for (i = 0; i <= (end-start); i++)
        printf("%d ", result[i]);
    printf("\n");
}
 
iverson702 schrieb:
Hallo zusammen,
)
printf("%d ", Ergebnis);


Ergebnis i ist char array, ich wess ja nicht was du haben willst aber entweder machst du aus Ergebnis einen integer oder du machst ein
Code:
printf("%s",Ergebnis[i]);
dann mußt du aber Liste folgendermasßen intialisieren
Code:
Liste char Liste[] = {[b]"[/b]1[b]"[/b],[b]"[/b]21[b]"[/b],..
 
hi!

@cremi
ich versteh das nicht richtig was du meinst! das laesst sich doch garnich uebersetzen:
Code:
Liste char Liste[] = {"1","21"};
da wirft er dir sicher sowas an den kopf wie Liste undeclared oder so! nicht?
Code:
char *Liste[] = {"1","21"};
so waere es korrekt!
 

Ähnliche Themen

C Code Hilfe!!! gesucht bei Dezimalzahl in Binärzahl for loop

ffmpeg Framerate erhöhen.

Unix Webserver mit HTML Seite erstellen

String auf Konsole ausgeben

Bestimmte Zeilen einer Spalte addieren

Zurück
Oben