PDA

Visualizza la versione completa : [C] Errore critico usando array di tipo char


dricer2000
02-12-2006, 16:16
Salve a tutti, mi sono appena iscritto a questo forum per porre questo quesito:Perch al C le variabili e gli array di tipo char nn vanno gi?:dh: io ho fatto questo semplice programma di sort, con gli interi ed i float va un amore ma se voglio farlo con i caratteri mi da un casino di problemi che nn so risolvere!!!Potete aiutarmi perfavore?? questo il sorgente C :

#include <stdio.h>

#define MAX_SIZE 100

void ord_selez(char [],int );

void main ()
{
int i,n;
char a[MAX_SIZE];

do
{
printf("Inserisci il size dell'array: ");
scanf("%d",&n);
}while (n<1 || n>MAX_SIZE);

for(i=0;i<n;i++)
{
printf("Inserisci il valore dell'array di posizione %d ",i+1);
scanf("%c",&a[i]);
}
ord_selez(a,n);

printf("L'array ordinato vale:");

for(i=0;i<n;i++)
{
printf(" %c ",a[i]);
}
printf("\n");
}

void ord_selez(char a[],int n)
{

int i,j=0;
char ins;

for(i=1;i<n;i++)
{
ins=a[i];
j=i-1;

while (j>=0 && ins<a[j])
{
a[j+1]=a[j];
j--;
}

a[j+1]=ins;
}
}

spero che possiate darmi una mano :biifu: :dh:

Samuele_70
02-12-2006, 16:58
Il codice sembra funzionare correttamente, qual' il problema esattamente ?

dricer2000
02-12-2006, 19:51
praticamente dopo aver inserito gli elementi da ordinare il programma da errore ed esce,ma questo solo con i tipi char

menphisx
02-12-2006, 21:07
Che tipo di errore ?

dricer2000
02-12-2006, 23:53
iil tipico errore di windows xp, il quale chiede di inviare l'errore alla microsoft per verificarne la causa.Cmq provate a compilarlo ed eseguirlo e vi renderete subito conto.Vi ricordo che questo errore lo fa solo con i char

oregon
03-12-2006, 08:56
A parte il problema del buffer della scanf a cui ho posto rimedio con la fflush(stdin)



do
{
printf("Inserisci il size dell'array: ");
scanf("%d",&n);
fflush(stdin);
}while (n<1 || n>MAX_SIZE);

for(i=0;i<n;i++)
{
printf("Inserisci il valore dell'array di posizione %d ",i+1);
scanf("%c",&a[i]);
fflush(stdin);
}


tutto il resto ha funzionato ...

(la fflush(stdin) usala solamente con il compilatore Visual C)

Se si manifesta un errore di quel tipo, devi dirci anche quali sono i dati in input ...
Io ho usato

5

h
w
g
d
s

e ha funzionato

dricer2000
03-12-2006, 09:33
Ok ! grazie mille senza di voi nn ci sarei mai riuscito!potrei sapere meglio come si utilizza questa fflush(stdin), cio a cosa serve?

oregon
03-12-2006, 09:53
http://www.cplusplus.com/ref/cstdio/fflush.html

dricer2000
03-12-2006, 10:11
ok grazie 1000!!!

Loading