Domanda

Ho un ciclo che popola "char array_of_strings [100] [100];" Ad un certo punto voglio essere in grado di pulirlo da tutte le stringhe aggiunte finora e iniziare ad aggiungere dalla posizione 0. Come posso pulirlo/riposarlo in C?

Grazie

È stato utile?

Soluzione

Supponendo che tu stia effettivamente usando l'array come stringhe, allora qualcosa del genere dovrebbe funzionare:

int i;
for (i=0; i<100; i++)
   array_of_strings[i][0] = 0;

Certo, non stai trattando i tuoi dati come stringhe, quindi potresti dover guardare qualcosa come Memset.

Altri suggerimenti

Puoi usare il funzione memset Per riportare tutti i caratteri a zero.

PS usando un array bidimensionale è abbastanza non convenzionale per trattare le corde. Prova a muoverti verso l'allocazione dinamica delle singole stringhe.

Quella struttura di dati non ha davvero una struttura intrinseca. Fondamentalmente lo resetti fingendo che non ci sia nulla in esso.

Hai un contatore che ti dice quale delle corde hai popolato, giusto? Impostalo su zero. Fatto.

memset(array_of_strings, 0, sizeof(array_of_strings));

Questo è più pulito rispetto a mettere un numero magico per le dimensioni lì dentro, e meno probabilità di rompere la strada quando qualcuno cambia le dimensioni dell'array di stringhe. Dal momento che conosci le dimensioni dell'array al momento della compilazione usando la dimensioneof funzionerà.

Puoi anche usare Bzero, che è molto simile a Memset, ma solo per zero. Su alcune piattaforme Bzero può essere più veloce di Memset, ma onestamente entrambe le funzioni sono così veloci, dividere i peli qui è sciocco.

bzero(array_of_strings, sizeof(array_of_strings));

bzero richiede di #include memset ha bisogno #include

La pagina Memset Man è qui

La pagina Bzero Man è qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top