Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [C] Array di stringhe

  1. #1

    [C] Array di stringhe

    Come da topic, come si dichiara un array di stringhe?

    char* stringa[] ?

    O in qualche altro modo?
    Avete una buona guida per le stringhe in C?

    grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Un array di stringhe, in C, è un array di puntatori a carattere. Quindi va bene sia la tua dichiarazione, sia quella alternativa:
    codice:
    char **mioArray;
    La prima vuole un dimensionamento costante, mentre la seconda è più adatta ai dimensionamenti dinamici.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Originariamente inviato da LeleFT
    Un array di stringhe, in C, è un array di puntatori a carattere. Quindi va bene sia la tua dichiarazione, sia quella alternativa:
    codice:
    char **mioArray;
    La prima vuole un dimensionamento costante, mentre la seconda è più adatta ai dimensionamenti dinamici.


    Ciao.
    Perfetto, grazie.
    Ora ho un altro problema:
    le stringhe sono inizializzate a "/0" o devo farlo esplicitamente? A me sembra la seconda, ma non sono sicuro.
    E poi:
    come faccio a vedere se una stringa è nulla?
    Sto provando qualcosa del tipo:
    if ( strlen(mioArray[i]) == 0 )

    oppure:
    if ( strcmp(mioArray[i]) "\0" )

    ma o ottengo l'errore "Segmentation fault" o non mi entra nell'if.

  4. #4
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    dichiarate in uno di quei due modi serve una malloc che alloca la memoria
    se la avessi dichiarata così char a[1][2] (credo) che la inizializza il compilatore

  5. #5
    Originariamente inviato da floyd
    dichiarate in uno di quei due modi serve una malloc che alloca la memoria
    se la avessi dichiarata così char a[1][2] (credo) che la inizializza il compilatore
    Come faccio a sapere le dimensioni? O meglio come faccio a sapere la dimensione di ogni singola stringa (il numero totale delle stringhe è fisso invece)?

  6. #6
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    char *s[] se la dichiari con * non ha una dimensione
    devi deciderla tu

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    117
    scusate una cosa... ma per dichiarare una stringa statica fai:

    char stringa[]

    per una stringa dinamica:

    char *stringa;

    stringa = (char *)calloc(n+1,sizeof(char))
    (dovrebbe andare bene anke: stringa = (char *)malloc(n+1))

    dove n è la lunghezza massima. il +1 è per il carattere null finale '\0';

    cmq, in entrambi i casi mi pare ke la devi inizializzare tu...

    per vedere se una stringa è vuota puoi fare:

    codice:
    if (stringa[0] == '\0')

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    444
    le uniche variabili che si autoinizializzano a zero dovrebbero essere quelle globali e quelle statiche, spero di non aver detto una vaccata
    *********************************
    Andrea
    *********************************

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    81
    Come faccio a sapere le dimensioni?
    Se intendi scrivere una frase e il programma deve vedere di quanti caratteri è composta la frase (la stringa) potresti utilizzare una funzione e nella definizione di questa mettere un bel for:
    int i;
    for(i=0;stringa[i]!='\0';i++);
    return i;

  10. #10
    Utente di HTML.it L'avatar di byaur
    Registrato dal
    Aug 2004
    Messaggi
    1,061
    Originariamente inviato da kylnas1
    Come faccio a sapere le dimensioni? O meglio come faccio a sapere la dimensione di ogni singola stringa (il numero totale delle stringhe è fisso invece)?
    usi strlen() che puoi usare anche nella malloc per la dimensione della stringa da allocare...
    Chi di noi non vorrebbe
    sollevare il velo sotto cui sta nascosto il
    futuro...
    David Hilbert

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.