Vorrei scrivere un codice in C, in modo tale che all'utente venga chiesto di inserire una parola od una frase, senza "limiti" di lunghezza. Una volta inserita, vorrei che ogni carattere della stringa (compreso lo spazio) venisse memorizzato in una cella di un array di strighe.
Ebbene, esiste un operatore che "spezzi" la stringa in ogni carattere (in Python è possibile una cosa del genere, se non sbaglio)? In modo tale, che la quantità degli elementi divisi, diventi la lunghezza dell'array da allocare dinamicamente.
Sto cercando di fare in questo modo perché ho provato a scrivere un codice, che data una lunghezza iniziale inserita dall'utente, mi crei un'array dinamico della dimensione digitata:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *s; //Dichiarazione array
int dim; //Dimensione per allocazione dinamica della memoria
int i; //Indice di scorrimento
printf("Dimensione della stringa? ");
scanf("%d", &dim);
s = malloc(dim*sizeof(char));
//Caricamento dati
printf("\nInserire una lettera alla volta\n");
for(i = 0; i < dim; i++)
{
printf("s[%d] = ", i);
scanf("%c", &(s[i]));
}
return 0;
}
La compilazione non da problemi, ma guardate cosa succede quando lo eseguo:
Dimensione della stringa? 5
Inserire una lettera alla volta
s[0] = s[1] = e
s[2] = s[3] = r
s[4] =
E termina il programma.