Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    [C] Stringa con Dimensione Dinamica (*str)

    Come faccio a fare l'allocamento automatico della stringa
    (L'allocamento deve essere fatto nel ciclo for...)
    Come Faccio ??? a far si che la mia stringa diventi di dimensione variabile ???

    codice:
    int main() {
        char *str;
        getLine ("a", str);
        return 0;
    }
    
    char *getLine (char key, char *boot_com) {
        boot_com[0] = key;
        for (i=1; boot_com[i-1] != '\n'; i++) {
              boot_com[i] = getche();
        }
        boot_com[i] = '\0';
    }
    #include <stdio.h>
    int main() { char m[18+1] = "_TeYS_We2^[TWda [f";
    int i = (((3*7))-21); for (; m[i]; i++)
    (i<27) ? m[i]+=(((13)*3)-25) : m[i] -= (7+(i)*(-1));
    puts(m); getchar(); return 0; };

  2. #2
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    char *getLine (char *);
    
    int main (void) {
    	char *str;
    	str = getLine ("Sono fuori dal tunnel \nle \nle \nlee..");
            printf ("%s", str);
    	return (0);
    }
    
    char *getLine (char *s) {
    	char *p;
    	p = (char *) malloc (sizeof (s));
            p = s;
    	return (p);
    }
    ma puoi benissimo fare..

    codice:
    char *str;
    str = "w la pappa col pomodoro");
    Visto che la stringa non è altro che un puntatore a char. :quipy:

  3. #3
    Ma a me' serve una cosa fatta con il realloc...
    Perche' non so' che dimensione ha la stringa...
    #include <stdio.h>
    int main() { char m[18+1] = "_TeYS_We2^[TWda [f";
    int i = (((3*7))-21); for (; m[i]; i++)
    (i<27) ? m[i]+=(((13)*3)-25) : m[i] -= (7+(i)*(-1));
    puts(m); getchar(); return 0; };

  4. #4
    #include <stdio.h>
    int main() { char m[18+1] = "_TeYS_We2^[TWda [f";
    int i = (((3*7))-21); for (; m[i]; i++)
    (i<27) ? m[i]+=(((13)*3)-25) : m[i] -= (7+(i)*(-1));
    puts(m); getchar(); return 0; };

  5. #5
    Bè puoi dichiarare una stringa di grandezza ad esempio 100 o 1000 e poi nel ciclo for "utilizzare" solo la grandezza richiesta dall'utente cosi' cioè
    codice:
    ....
    #define max 100
    
    char stringa[max];
    int i,n;
    
    void main()
    {
    
    do{
    printf("immetti la grandezza della stringa");
    scanf("%d",&n);
    }while ( n > max || n < 1 );
    
    for (i=0; i<n ; i++)
    
    scanf("%c",&stringa[i];
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  6. #6
    Io Non so' che dimensione ha la stringa che inserisce l'utente, puo' essere di 2 char come di 6000000...

    Quindi devo usare il realloc...
    Ma come ???
    #include <stdio.h>
    int main() { char m[18+1] = "_TeYS_We2^[TWda [f";
    int i = (((3*7))-21); for (; m[i]; i++)
    (i<27) ? m[i]+=(((13)*3)-25) : m[i] -= (7+(i)*(-1));
    puts(m); getchar(); return 0; };

  7. #7
    Originariamente inviato da nightfall
    Io Non so' che dimensione ha la stringa che inserisce l'utente, puo' essere di 2 char come di 6000000...

    Quindi devo usare il realloc...
    Ma come ???
    infatti guarda il mio codice metti #define max 100000000000000000 cosi' nn hai problemi
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  8. #8
    Ma mi occupa troppa memoria... Io voglio una cosa dinamica,
    inserisce la stringa di 10000000 byte quando e' stata usata si
    fa' un bell free() e quei 10000000 byte sono anora liberi
    #include <stdio.h>
    int main() { char m[18+1] = "_TeYS_We2^[TWda [f";
    int i = (((3*7))-21); for (; m[i]; i++)
    (i<27) ? m[i]+=(((13)*3)-25) : m[i] -= (7+(i)*(-1));
    puts(m); getchar(); return 0; };

  9. #9
    Originariamente inviato da nightfall
    Ma mi occupa troppa memoria... Io voglio una cosa dinamica,
    inserisce la stringa di 10000000 byte quando e' stata usata si
    fa' un bell free() e quei 10000000 byte sono anora liberi
    si certo

    Noi per ora a scuola abbiamo fatto cosi'...definisci una array di 1000elementi con una costante ad esempio...poi fai una domanda della sua grandezza e la memorizzi in una varabile,n ad esempio, e quindi nel ciclo for metti la condizione i<n cosi' chiede le n volte che vuoi tu quegli n elementi..

    Tutto cioè te l'ho tradotto in C sopra guarda



    ps puoi usare la funzione calloc() inclusa nella stdlib.h per fare la cosa in maniera dinamica e al temrine un free(nome_vettore);
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  10. #10
    Utente di HTML.it L'avatar di pdpmpd
    Registrato dal
    Jan 2003
    Messaggi
    448
    int i,celle=5;
    char *stringa;
    stringa= (char *)calloc(celle,sizeof(char));
    [..]
    free(stringa);
    Drug misuse is not a disease, it is a decision, like the decision to step out in front of a moving car. [...] In this particular life-style the motto is "be happy now because tomorrow you are dying", but the dying begins almost at once, and the happiness is a memory.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.