Crash programma durante l'esecuzione - C

di il
2 risposte

Crash programma durante l'esecuzione - C

Salve a tutti ragazzi sono nuovo qui e sono un neofita in campo programmazione. Sto studiando da solo il linguaggio C con il libro dei fratelli Deitel. Arrivato al capitolo delle stringhe, decido di applicarmi in un esercizio che consiste nel formare delle frasi casuali. Ora il problema in se per se è anche banale ( devo prendere le parole da inserire da dei vettori di stringhe ), solo che il programma si compila tranquillamente, ma durante l'esecuzione crasha. Vorrei qualche consiglio su cosa possa far crashare il listato. Di seguito il listato scritto:
int main(){
	
	char *article[ 5 ];
	article[ 0 ] = "the";
	article[ 1 ] = "a";
	article[ 2 ] = "one";
	article[ 3 ] = "some";
	article[ 4 ] = "any";
	
	...


	char str[ 50 ];
	int r = 0;
	
	srand( time( NULL ) );
	
	for( int i = 0; i < 2; i++ ){
		
		r = rand() % 5;
		
		article [ i ][ 0 ] = toupper( article[ r ][ 0 ] ); /* Credo che il programma crashi qui , dove dovrei convertire i primo carattere in maiuscolo */
		
		printf( "%s\n", *article[ r ]  );
		
		strcpy( str, article[ r ] ); 
	}
	
	printf( "%s", str );
	
	return 0;
}


Non insultatemi per qualche errore, anche grosso, perché come già detto sono un neofita. Grazie.

2 Risposte

  • Re: Crash programma durante l'esecuzione - C

    Non puoi modificare delle stringhe costanti. Riscrivi così la prima parte
    
       char s1[] = "the";
       char s2[] = "a";
       char s3[] = "one";
       char s4[] = "some";
       char s5[] = "any";
       char *article[] = {s1, s2, s3, s4, s5};
    
    
  • Re: Crash programma durante l'esecuzione - C

    Grazie mille per l'aiuto, il metodo che ho postato l'ho trovato su internet, però mi sa che era utile solo il passaggio dei parametri ad una funzione, non andava bene per modificare la stringa. Grazie ancora...
Devi accedere o registrarti per scrivere nel forum
2 risposte