Buonasera,
devo scrivere un programma che acquisisca una stringa contenente spazi e restituisca un array di interi, ogni elemento del quale indica la posizione degli spazi nella stringa.
Esempio:
“Questa è una frase"
output: [6, 8,12].
Ci sono alcuni vincoli tra cui il creare delle funzioni una delle quali deve essere: int* posizione_spazi(char* s, int spazi) che prende in input la stringa e il numero di spazi e restituisce un array di interi, ogni elemento del quale indica la posizione di uno spazio.
La stampa dell’array di interi contenente le posizioni degli spazi deve avvenire dal main.
Non riesco a farlo.
La stampa, se lanciata dalla funzione, restituisce i valori corretti (ho lasciato la printf apposta); se lanciata del main, non fuziona. Sicuramente è perché l'array contenente la posizione degli spazi è interno alla funzione ma non so come risolvere.
#include <stdio.h>
int conta_spazi(char frase[]);
int* posizione_spazi(char frase[], int conta);
int conta=0;
main ()
{
char frase[]="Q uestae una frase";
int* puntator;
int conta = conta_spazi(frase);
printf("%s\n", frase);
puntator = posizione_spazi(frase, conta);
for(int i=0; i<conta; i++ )
printf("SPAZI %d \n", *puntator++);
system("pause");
return 0;
}
int conta_spazi(char frase[]){
int conta=0;
int i=0;
while(frase[i]!='\0'){
if (frase[i]==32){conta++;}
//printf("char %c --- %d --- %d\n", frase[i], frase[i], conta);//un semplice controllo che stampa ogni lettere il codice ascii e il numero di spazi
i++;
}
printf("Gli spazi all'interno della frase sono: %d\n", conta);
return conta;
}
int* posizione_spazi(char frase[], int conta){
int i=0;
int j=0;
int* puntatore;
int nuovo_array[conta];
while(frase[i]!='\0'){
if (frase[i]==32){nuovo_array[j]=i; printf("nuovo_array %d --- %d\n", nuovo_array[j], &nuovo_array[j]); j++;}
i++;
}
puntatore=&nuovo_array[0];
return puntatore;
}
Cosa sbaglio?
Grazie