Problema con strcpy e strcat

di il
2 risposte

Problema con strcpy e strcat

Salve, sono uno studente del primo anno di informatica itps e il professore ci ha assegnato la creazione di un programma che prenda n float e restituisca la loro media, i valori massimo e minimo con relativa posizione (ovvero quando sono stati inseriti). per rendere però il compito più complicato ci ha richiesto di utilizzare un solo ciclo all'interno del programma.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

int main(void) {
	int n;
	float s=0;
	float media, min, max;
	int i=0;
	char *indmin, *indmax, *strint;
	setbuf(stdout, NULL);
	printf ("inserisci il numero di elementi che vuoi inserire\n");
	scanf("%d", &n);
	float numeri[n];
	for(i=0; i<=n-1; i++){
		printf ("inserisci il %d° elemento \n", i+1);
		scanf("%f", &numeri[i]);
		s=s+numeri[i];
		if(i==0){
			min=numeri[i];
			max=numeri[i];
			indmin="1° elemento\n";
			indmax="1° elemento\n";

		}
		[color=#FF0000]else[/color]{
			if(numeri[i]<min){
				indmin="";
				min=numeri[i];
				sprintf(strint, "%d° elemento\n", i+1);
				strcpy(indmin, strint);
			}
			else if(numeri[i]==min){
				sprintf(strint, "%d° elemento\n", i+1);
				strcat(indmin, strint);
			}

			if(numeri[i]>max){
				indmax="";
				max=numeri[i];
				sprintf(strint, "%d° elemento\n", i+1);
				strcpy(indmax, strint);
			}
			else if(numeri[i]==max){
				sprintf(strint, "%d° elemento\n", i+1);
				strcat(indmax, strint);
			}
		}

		if(i==n-1){
			media=s/n;
			printf("la media è %f\nil valore minimo è %f ed è stato inserito come:\n%sil valore massimo è %f ed è stato inserito come:\n%s", media, min, indmin, max, indmax);


		}
	}
}
il programma però crasha quando entra nell'else segnato in rosso o meglio crasha quando raggiunge la funzione strcpy o la funzione strcat e non ne capisco il perchè. la domanda non è su come ottimizzare il programma ma sul perchè quelle istruzioni mandano in crash il programma.
spero in una celere risposta
grazie in anticipo

ps: credo che il problema sia dato dal indmin e indmax all'interno di quelle funzioni ma non capisco perchè

2 Risposte

  • Re: Problema con strcpy e strcat

    Hai usato dei puntatori senza allocare lo spazio per le stringhe.

    O allochi dinamicamente con malloc o staticamente con

    char stringa[30];

    per una stringa di 30 caratteri
  • Re: Problema con strcpy e strcat

    Grazie mille oregon, sono riuscito a risolvere il problema
Devi accedere o registrarti per scrivere nel forum
2 risposte