Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Stringhe in C

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    18

    Stringhe in C

    Salve ragazzi,
    il mio codice c deve convertire un array di interi in un'unica stringa. Il risultato ottenuto però non mi sembra affatto corretto!! Dove sbaglio?

    Output: Vettore s di t componenti in versione stringa= �#%1010

    Codice PHP:

     int t
    =4;

     
    int s[t];

     
    int dim=128;

     
    char *s_dest;
     
    s_dest = (char *) malloc((t+1)*sizeof(char));
     
    char *s_orig;
     
    s_orig = (char *) malloc(t*sizeof(char));
       
     for(
    i=0;i<t;i++){
            
    int xx=rand()%2;
            
    s[i]=xx;
            
    sprintf(s_orig"%d"s[i]);
            
    strcat(s_dests_orig);
         }

     
    printf("Vettore s di t componenti in versione stringa= %s \n",s_dest); 

  2. #2
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Ciao . . . Prova a inserire
    codice:
    s_dest[0] = 0;
    prima dei ciclo for . . .
    C++ 4ever
    496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non capisco il perchè dell'esistenza di tutti questi vettori (alcuni statici, alcuni dinamici ...)

    s
    s_orig
    s_dest


    ???
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153
    devi inizializzare la stringa s_dest perché la strcat cerca il carattere '\0' e se non è inizializzata non lo trova quindi hai quel risultato
    cogli l'attimo

  5. #5
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    ma a quanto ho capito io, ti serve convertire un vettore di interi in una stringa in modo da stampare l'intero buffer con il %s; esempio:
    vettore v = 11010
    stringa s = 11010
    ovviamente una volta che riempi la stringa devi ricordare di mettere il carattere terminatore...altrimenti non stamperai correttamente!
    io ho provato a scrivere 2 righe di codice, vedi un pò se è quello che volevi:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define T 4
    
    int main()
    {
    
    int s[T];
    int i;
    
    char *s_dest;
    s_dest = (char *) malloc((T+1)*sizeof(char));
    char *s_orig;
    s_orig = (char *) malloc(t*sizeof(char));
    
    for(i=0;i<T;i++){
            int xx=rand()%2;
            s[i]=xx;
            sprintf (s_dest+i,"%d\n", s[i]);
         }
         s_dest[T+1]='\0';
    printf("Vettore s di t componenti in versione stringa= %s \n",s_dest);
    return 1;
    }
    PS: invece di usare int t=4 è preferibile usare una define dichiarando una costante fuori dal main!
    "Non può piovere per sempre" Il Corvo
    Forza Vigor!

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    La questione è ... il vettore numerico serve? O serve soltanto poter generare una stringa di 0 e 1 di una determinata lunghezza ?

    In quest'ultimo caso, la maggior parte del codice non serve ... intendo

    codice:
    #define T 5
    
    int main()
    {
        int i;
        char s_dest[T] = {0};
    
        for(i=0; i<T-1; i++)
            s_dest[i] = '0' + (rand()%2);
    
        printf("Stringa = %s \n", s_dest);
    
        return 0;
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    La questione è ... il vettore numerico serve? O serve soltanto poter generare una stringa di 0 e 1 di una determinata lunghezza ?

    In quest'ultimo caso, la maggior parte del codice non serve ...
    bhè si, oregon ha ragione, io ho modificato poco di quel codice, ma volendo, si potrebbe minimizzare ancora molto portandolo a poche righe:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define t 4
    
    int main()
    {
    
    int i;
    char *s_dest;
    s_dest = (char *) malloc((t+1)*sizeof(char));
    
    for(i=0;i<t;i++)
            sprintf (s_dest+i,"%d\n", rand()%2);
    
    s_dest[t+1]='\0';
    printf("Vettore s di t componenti in versione stringa= %s \n",s_dest);
    return 1;
    }
    inoltre non ha neanche molto senso ricorrere alla allocazione dinamica di s_dest in questo caso poichè basta fare:
    codice:
    char s_dest[t+1];
    Spero che così vada meglio...se c'è qualcosa che nn va...segnalate!
    "Non può piovere per sempre" Il Corvo
    Forza Vigor!

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    18
    Ho risolto grazie ai vostri contributi!
    Grazie!!!

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da vanki
    Ho risolto grazie ai vostri contributi!
    Grazie!!!
    Sì ma come?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    18
    Il problema consisteva nella mancata inizializzazione della stringa s_dest.
    La soluzione suggeritami inizialmente da oregon, ma ancor di più la stessa ripresa con qualche modifica da MrX87 andava benissimo!

    Ciao

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 © 2025 vBulletin Solutions, Inc. All rights reserved.