Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    18

    C - Problema con la gestione delle stringhe

    Salve a tutti,
    ho un piccolo problema con l'uso delle stringhe in C. In particolare vi chiedo come:
    1) Ottenere convertire un array di interi in una stringa s1
    2) Ottenere una matrice di una particolare tipologia di interi in una stringa s2
    3) Ottenere una terza stringa come concatenazione delle recedenti


    Ho provato con il seguente codice.. ma ottengo Segmentaion fault
    Codice PHP:
       //Parte 1: Stringa da array
       
       
    srand(time(NULL));
       
    char s_dest[]="";
       
    char s_orig[]="";
        
       
       for(
    i=0;i<t;i++){
            
    int xx=rand()%2;
            
    mpz_init_set_ui(s[i],xx);
            
    mpz_get_str (s_orig62s[i]);
            
    strcat(s_dests_orig);
         }

       
    printf("S_dest= %s",s_dest);

       
    ////Parte 2: Stringa da matrice
       
       
    char str[]="";
       
    char str2[]=""

        
    mpz_init(y_);
        
    mpz_init(ij_);
        
    mpz_set_ui(ij_,uno);
        
        for (
    i=0i<k_di++)       /* scandisco le righe con l'indice i */
           
    {  mpz_mul(Ry[i],ij_,ij_);
              for (
    j=0j<d_j++)   /* e le colonne con j  */
               
    {mpz_mul(y_,R[i][j],y[j]);
                
    mpz_mul(Ry[i],Ry[i],y_);
                
    mpz_mod(Ry[i],Ry[i],p);}
           
            
    mpz_get_str(str262Ry[i]);
            
    strcat(strstr2); 

            }


       
    //Parte 3: Concateno le due stringhe
       
    strcat(strs_dest); 
    Grazie in anticipo!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Il problema di tutti i tuoi esempi è l'allocazione dello spazio per le stringhe.

    Non allochi mai lo spazio e quindi non potrai scrivere al loro interno (con la strcat e simili)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    18
    ok, grazie innanzi tutto.
    Ho provato con malloc().. ma adesso a video ho :

    Stringa di input: 6�銪5l�w�k�ߊ���+����Ћ«_���p69�b uc�����M�
    nf�~S�v��dvM^h��)͗�{�����?�Q
    ɢ�t��x�*��q0x��5pJvlJYgaJc6GZggGJmHUU8Oi92aj3Fe YC4jNfYGruid5EdMWorSmA3zye7kfLFRC0uO4nzZFZqU8NnSTo kqq2vDhU6Fsb5VB1kdIqWb9GoRoXKacPRQzksMix17FSv3t0Bj Zo8rdGFVy11HR2J9AepunTtAkQguQub4qfqRBZZQس>0110

    che non mi pare tanto corretta ...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Hai provato "come"?

    P.S. Attenzione quando rispondi al formato ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    18
    Ho provato così:

    Codice PHP:
     srand(time(NULL));
       
    int dim=t;
       
    char *s_dest;
       
    s_dest = (char *) malloc(dim*sizeof(char));
       
    //char s_dest[t+1];
       
    char *s_orig;
       
    s_orig = (char *) malloc(dim*sizeof(char));
       
       for(
    i=0;i<t;i++){
            
    int xx=rand()%2;
            
    mpz_init_set_ui(s[i],xx);
            
    mpz_get_str (s_orig62s[i]);
            
    strcat(s_dests_orig);
         }

       
    printf("S_dest= %s",s_dest);

       
    ////Parte 2: Stringa da matrice
       
       
    int dim2=1000;
       
    int dim3=dim+dim2*k_d;
       
    char *str;
       
    str = (char *) malloc(dim3*sizeof(char));
       
    //char s_dest[t+1];
       
    char *str2;
       
    str2 = (char *) malloc(dim2*sizeof(char)); 

        
    mpz_init(y_);
        
    mpz_init(ij_);
        
    mpz_set_ui(ij_,uno);
        
        for (
    i=0i<k_di++)       /* scandisco le righe con l'indice i */
           
    {  mpz_mul(Ry[i],ij_,ij_);
              for (
    j=0j<d_j++)   /* e le colonne con j  */
               
    {mpz_mul(y_,R[i][j],y[j]);
                
    mpz_mul(Ry[i],Ry[i],y_);
                
    mpz_mod(Ry[i],Ry[i],p);}
           
            
    mpz_get_str(str262Ry[i]);
            
    strcat(strstr2); 

            }


       
    //Parte 3: Concateno le due stringhe
       
    strcat(strs_dest); 
    ma evidentemente sbaglio !

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Nel primo codice allochi t caratteri ... ma quanto vale t ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    18
    t vale 4 (è anche la dimensione dell'array s)

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Quindi s_dest non potrà essere più lunga di 3 caratteri (piu' il terminatore ...) ... corretto?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    18
    Esatto, ma ho provato anche ad impostare altri valori di t, senza però ottenere risultati corretti.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Sì ... ma quando esegui la strcat e aggiungi dati alla stringa, questa si aspetta che lo spazio ci sia nella stringa ? Quindi ti bastano i 3 caratteri anche se ne aggiungi altri?

    E poi ... cosa fanno le funzioni

    mpz_init_set_ui(s[i],xx);
    mpz_get_str (s_orig, 62, s[i]);

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

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.