dynamische speichervergrösserung



  • guten morgen

    eine frage. Und zwar ist es so wie es in dem kleinen codebeispiel möglich ein beliebiges array ( das programm verwendet 2) über die selbe funktion zu erweitern sprich muss ich das array an die unterfunktion by call by vale übergeben oder kann ich mir das generell sparen.

    speichervergrössern(output,2);
    //
    //
    speichervergrössern(input,128);

    int Speichervergrössern(char array,int wieviel);
    {// neuen speicher abhängig von bedarf anfordern
    array = (char )realloc(array,wievielsizeof(char));
    fehler();

    hoffe es ist halbwegs verständlich ws ich meine 😞



  • Moin,
    das geht mit nem Zeiger, oder einem Zeiger auf diesen, siehe er unten:

    char* my_resize_a ( char* s, unsigned hau_matsch )
    {
    	char* t = realloc ( s, hau_matsch ); 
    	if ( t == NULL ) return s;
    	return t;
    }
    
    int my_resize_b ( char** s, unsigned hau_matsch )
    {
    	char* t;
    	if ( s == 0 ) return 0;
    	t = realloc ( *s, hau_matsch ); 
    	if ( t == NULL ) return 1;
    	*s = t;
    	return 0;
    }
    
    int  main()
    {
    	char* s = NULL;
    	s = my_resize_a ( s, 16 );
    	if (s)
    		strcpy ( s, "Hi " );
    	else
    		return 0;
    	if ( 0 == my_resize_b ( &s, 64 ))
    		strcat ( s, "Bruder!" );
    	puts(s);
    	free(s);
    	return 0;
    }
    


  • 😕 😕 ok dazu ne dumme frage 😕 😕

    wie bekomm ich aus ner charfunktion ne int zurück sprich 2 return werte oder ka wie eben

    int main()
    .
    .
    .
    .
    char* xxx=yyy(beliebiger string)

    printf ("%s\n", xxx)

    char* yyy(beliebige bla bla)
    .
    .
    . und hier zähl ich etwas mit wie bekomm ich das in meine mainfunktion zurück um sagen zukönnen so oft wurde das gemacht
    return zzz

    wenn wer helfen könnte wär toll

    lfg alex 😕



  • Hi,
    brauchst du einen Zähler:

    int main()
    {
    	char* xxx=yyy(beliebiger_string); 
    	char* yy(beliebige_bla_bla); 
    	int ZAEHLER_FUER_BELIEBIGES_BLAAAAH = 0;
    	printf ("%s\n", xxx); 
    	// und hier zähl ich etwas mit wie bekomm ich das in meine mainfunktion zurück um sagen zukönnen so oft wurde das gemacht 
    	ZAEHLER_FUER_BELIEBIGES_BLAAAAH++; // Einmal blah gemacht.
    
    	printf ("%s\n", yy); 
    	// und hier zähl ich etwas mit wie bekomm ich das in meine mainfunktion zurück um sagen zukönnen so oft wurde das gemacht 
        ZAEHLER_FUER_BELIEBIGES_BLAAAAH++;// Nochmal blah gemacht.
    
    	printf ("%d\n", ZAEHLER_FUER_BELIEBIGES_BLAAAAH); // Anzeige wie oft blah gemacht
    
    	return zzz; 
    }
    

    Gruß,
    B.B.



  • int main()
    .
    .
    .
    .
    char* xxx=yyy(beliebiger string)
    
    printf ("%s\n", xxx)
    return(0);
    
    char* yyy(beliebige bla bla)
    .
    .
    . und hier zähl ich etwas mit wie bekomm ich das in meine mainfunktion zurück um sagen zukönnen so oft wurde das gemacht
    return zzz
    

    jo klar das mitn counter ist mir schon klar aber wie bekomm ich ihn aus meiner
    unterfunktion ins main zurück wenn ich ne *char funktion habe und nein int wert ins main für die auswerten übergeben will

    schreib ich mir nen pointer in der unterfunktion bekomm ich
    initialization makes pointer from integer without a cast
    oder müste ich schon beim funktionsaufruf den int ausn main mitnehmen oder stehts eh schon da und ich steh am schlauch 😞



  • Hallo,

    char* yyy(int* zaehler);
    
    int main()
    {
       int ZAEHLER_FUER_BELIEBIGES_BLAAAAH = 0;
    
       char* xxx = yyy(&ZAEHLER_FUER_BELIEBIGES_BLAAAAH);
    
       /* ZAEHLER_FUER_BELIEBIGES_BLAAAAH ist jetzt 1 */
    
    }
    
    char* yyy(int* zaehler)
    {
       ++*zaehler;
    }
    

    MfG,

    Probe-Nutzer


Anmelden zum Antworten