[RISOLTO] [C] Controllo su array di stringhe

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
Blallo
Packager
Packager
Messaggi: 3298
Iscritto il: ven 12 ott 2007, 11:37
Nome Cognome: Savino Liguori
Slackware: 14.2 / 12.2
Kernel: 4.4.14-smp
Desktop: DWM
Località: Torino / Torremaggiore (FG)
Contatta:

[RISOLTO] [C] Controllo su array di stringhe

Messaggio da Blallo »

E' una domanda idiota, credo.
Ma non ho trovato risposte soddisfacenti su Google.

Devo allocare un array di stringhe per avere dei riferimenti per una matrice di incidenza.
Quindi ho un

Codice: Seleziona tutto

char **array
Ora dopo averlo allocato, devo:
- cercare se c'è un dato coincidente
- se c'è gli restituisco l'indice
- se non c'è devo aggiungerlo e restituire l'indice

Ma il problema sorge a monte, poiché ovviamente l'array parte vuoto.
Come faccio a controllare che l'array sia completamente vuoto?
E di conseguenza, anche all'aggiunta di un dato, far capire alla ricerca dove fermarsi
dato che non sarà pieno sin dall'inizio?

Ho provato a controllare se il puntatore vale NULL, ma sembra non funzionare.

Si, potrei usare una lista, ma dato che, in fase acquisizione dati,
ricavo la quantità di dati che questo array conterrà,
volevo evitare e vedere di fare qualcosa di carino in C.

Grazie in anticipo!
Ultima modifica di Blallo il sab 21 giu 2014, 23:32, modificato 1 volta in totale.

Avatar utente
robbybby
Linux 4.x
Linux 4.x
Messaggi: 1223
Iscritto il: sab 16 dic 2006, 10:48
Slackware: 13.1 / 64 bit
Kernel: 3.3.x
Desktop: KDE 4.4.5
Località: Fra Trantor e Terminus

Re: [C] Controllo su array di stringhe

Messaggio da robbybby »

Post errato, scusate.
Ultima modifica di robbybby il mar 17 giu 2014, 16:42, modificato 2 volte in totale.

Avatar utente
robbybby
Linux 4.x
Linux 4.x
Messaggi: 1223
Iscritto il: sab 16 dic 2006, 10:48
Slackware: 13.1 / 64 bit
Kernel: 3.3.x
Desktop: KDE 4.4.5
Località: Fra Trantor e Terminus

Re: [C] Controllo su array di stringhe

Messaggio da robbybby »

Prova con un memset():

Codice: Seleziona tutto

memset(array,
       0x00,
       dimensione_array * sizeof(char));

Avatar utente
Blallo
Packager
Packager
Messaggi: 3298
Iscritto il: ven 12 ott 2007, 11:37
Nome Cognome: Savino Liguori
Slackware: 14.2 / 12.2
Kernel: 4.4.14-smp
Desktop: DWM
Località: Torino / Torremaggiore (FG)
Contatta:

Re: [C] Controllo su array di stringhe

Messaggio da Blallo »

Ti ringrazio!
(Non capisco i "...", è per la demenzialità della domanda? :p )

Avatar utente
brg
Linux 3.x
Linux 3.x
Messaggi: 500
Iscritto il: sab 12 mar 2011, 14:20
Slackware: 14.2
Kernel: 4.4.172
Desktop: KDE4
Località: Montecatini
Contatta:

Re: [C] Controllo su array di stringhe

Messaggio da brg »

Non puoi aggiungere alcunché ad un array dichiarato in quel modo. O usi memset, o usi una struttura. Io userei una struttura.

Avatar utente
robbybby
Linux 4.x
Linux 4.x
Messaggi: 1223
Iscritto il: sab 16 dic 2006, 10:48
Slackware: 13.1 / 64 bit
Kernel: 3.3.x
Desktop: KDE 4.4.5
Località: Fra Trantor e Terminus

Re: [C] Controllo su array di stringhe

Messaggio da robbybby »

Blallo ha scritto:Ti ringrazio!
(Non capisco i "...", è per la demenzialità della domanda? :p )
I puntini sono per cancellare un post parziale, dato che mi era scappato l'Enter.
Adeso correggo. Scusa.

Quando allochi memoria con malloc() (o new in C++) il contenuto del blocco di memoria è casuale: non viene inizializzato.

Avatar utente
Blallo
Packager
Packager
Messaggi: 3298
Iscritto il: ven 12 ott 2007, 11:37
Nome Cognome: Savino Liguori
Slackware: 14.2 / 12.2
Kernel: 4.4.14-smp
Desktop: DWM
Località: Torino / Torremaggiore (FG)
Contatta:

Re: [C] Controllo su array di stringhe

Messaggio da Blallo »

brg ha scritto:Non puoi aggiungere alcunché ad un array dichiarato in quel modo. O usi memset, o usi una struttura. Io userei una struttura.
Dopo userei una malloc per allocare un array di puntatori a char, che poi userei per memorizzare stringhe allocate.
Il famoso "senza sprechi di memoria" che trovi in tante esercitazioni :D
robbybobby ha scritto:Quando allochi memoria con malloc() (o new in C++) il contenuto del blocco di memoria è casuale: non viene inizializzato.
Ecco, spiegazione esauriente e semplice.

Rispondi