Per ricevere una stringa, si dichiara un vettore sufficientemente grande e il gioco è fatto.
Cosa fare quando non si conosce a priori la dimensione della stringa volendo sfruttare l'allocazione dinamica?
Ho steso un programmino con malloc e realloc, molto rudimentale, ma funzionante.
Se però provo ad inserirlo in un programma che debba leggere il nome di un file sul quale compiere certe operazioni, va tutto a farsi friggere.
Nel senso che se il nome del file che passo al programma è lungo 7 caratteri o meno, compie il suo dovere, ma se è anche di un carattere più lungo il programma si blocca e dà come errore "segmentation fault".
Spero vivamente di stare sbagliando qualcosa, altrimenti non saprei dove sbattere la testa.
Qui di seguito riporto il programma (mi scuso ulteriormente per la sintassi trasandata), sperando di ricevere un aiuto dalla community
#include <stdio.h>
#include <stdlib.h>
int main(){
FILE *f;
char *m, *n;
int i=0, j, x, y, z;
m=malloc(sizeof(char));
m[0]=getchar();
while(m[i]!='\n'){
i++;
j=i+1;
m=realloc(m, j*sizeof(char));
m[i]=getchar();
}
n=malloc(i*sizeof(char));
for(i=0; i<j-1; i++)
n[i]=m[i];
f=fopen(n, "r");
fscanf(f, "%d", &x);
fscanf(f, "%d", &y);
fscanf(f, "%d", &z);
printf("%d %d %d", x, y, z);
}