Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    16

    [C] - Covertire char* to char[]

    Vorrei convertire un char* per farlo diventare un char[].
    Ad esempio:
    char *str1="ciao";
    vorrei farlo diventare
    str2=['c',''i','a','o'];
    Non ho idea su come farlo... un aiuto?

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    16
    ho risolto così:

    codice:
    int main(void)
    {
    	int i=0;
        char *str = "hello";
        char str2[strlen(str)+1];
        while(i!=strlen(str)){
        	str2[i]=str[i];
        	i++;
        }
        str2[i+1]='$';
        printf("%s\n",str2);
    
    
            return 0;
    }
    E' giusta? Voi conoscete una soluzione migliore?

  3. #3
    In C89 e in C++ non puoi dichiarare array a dimensione non fissata a compile-time, per cui dovresti usare l'allocazione dinamica o una dimensione fissata sufficientemente grande.
    Comunque, per la copia ti basta una strcpy.
    Inoltre:
    - char * str="hello" non è una buona idea, dato che hai un puntatore ad un'area di memoria che non deve essere modificata (ovvero, se cerchi di modificare lo string literal "hello" a cui fa riferimento str vai in undefined behavior, ovvero, su molte piattaforme, crash); sarebbe corretto const char * str="hello";
    - in effetti, se vuoi creare un array di caratteri inizializzato fin da subito ad una certa stringa ti basta fare
    codice:
    char str2[]="hello";
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    16
    Grazie MItaly!

  5. #5
    Amaro C++, il gusto pieno dell'undefined behavior.

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.