[C] funzione crasha quando restituisce una stringa

di il
3 risposte

[C] funzione crasha quando restituisce una stringa

Salve, ho un problema con una funzione che dovrebbe restituire un array di caratteri. In pratica la funzione chiede in input una stringa e controlla se è formata solo da spazi o tab. Se lo è chiede di inserire nuovamente la parola, sennò dovrebbe restituire l'indirizzo del puntatore al array che poi vado a salvare in una stringa nel main. Al momento di resituire la parola nonformata solo da spazi però, il programma crasha. Sono quindi praticamente convinto che il problema sia su "return risp;" ma ho visto su svariati forum che per molti funziona questo tipo di return. Come posso risolvere il problema? Grazie in anticipo
PS: penso che lo capiate da soli, però ve lo dico: il tmp l'ho messo solo per poter iterare la funzione. La parola corretta dovrebbe essere sempre restituita da risp.
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <ctype.h>

char *richiesta_stringa();
int strspc(char*);

int main(void) {
	char *mdl;
	char array[51];
	int i;

	printf("immeti parola: ");
	mdl=richiesta_stringa();
	for (i=0; i<strlen(mdl); ++i);
	array[i]=*(mdl+i);
	printf("%s",array);
}

int strspc(char *str){//restituisce 1 qualora la stringa sia di lunghezza 0 e 2 se è composta interamente da spazi o tabulazioni
	int c;
	size_t sl = strlen(str);
	if (!sl) return 1;
	for(c=0; c<(int) strlen(str); c++)
		if(!isspace(str[c])) return 0;
	return 2;
}

char *richiesta_stringa(){

	char *tmp;
	char risp[51];


	gets(risp);
	if(strspc(risp)!=0){
		printf("ERRORE 002: parola immessa non valida\nReinseriscila per favore: ");
		tmp=richiesta_stringa();
		return tmp;
	}
	return risp;
}

3 Risposte

Devi accedere o registrarti per scrivere nel forum
3 risposte