Salve a tutti, ho questo codice, funziona tutto Ok ma vorrei chiarire con voi alcuni dubbi:
#include <stdlib.h>
#include <stdio.h>
#define N 10
int main(void)
{
char buffer[]="questa_stringa_e_stata_riempita";
char *stringa[N]={};
/* se nella dichiarazione di stringa[N] non usavo: "= {}"; e successivamente gli assegnavo la stringa contenuta in buffer, andavo in segmentation fault. Ho preferito a settare a 0 tutte le stringhe, sperando di poterle riempire dopo senza rischi */
int i=0;
printf("I valori prima di cambiarli:\n\n");
for(i=0; i<N; i++)
printf("stringa[%d]=%s \n",i,stringa[i]);
printf("\nQuesti sono gli indirizzi:\n\n");
for(i=0; i<N; i++)
printf("&stringa[%d]=%d\n",i,&stringa[i]);
for(i=0; i<N; i++)
stringa[i]=buffer;
printf("\nI valori cambiati:\n\n");
for(i=0; i<N; i++)
printf("stringa[%d]=%s \n",i,stringa[i]);
system("pause>nul");
}
Il mio scopo è quello di realizzare un piccolo programmino che leggendo un file, trasferisca ogni parola in una stringa[i]...Per poi farci delle cose successivamente. Ora ho 2 domande:
1):
C'è rischio che se la stringa che scrivo in "stringa[i]" è troppo grande mi può mandare in segmentation fault?
2):
Se il file contiene più di 10 parole come posso aumentare di colpo la dimensione dell'array?
Devo utilizzare il suo indirizzo base e riallocare spazio con un realloc?
GRAZIE A TUTTI