C, Trasformare una stringa in un array di caratteri

di il
10 risposte

C, Trasformare una stringa in un array di caratteri

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.

10 Risposte

Devi accedere o registrarti per scrivere nel forum
10 risposte