C Compiler, Segmentantion fault

Άλκης Αργυρόπουλος aaalex at ath.forthnet.gr
Sat Mar 31 17:23:47 EEST 2007


On Saturday 31 March 2007 1:37:57 pm John Salatas wrote:
> το κάνω compile
> john at salatas:~/Projects/C/limits> cc limits.c -o limits
>
> και στην εκτέλεση παίρνω τα εξής:
> john at salatas:~/Projects/C/limits> ./limits
> Δώσε τον signed short int (min: -32768, max: 32767):    1
> Δώσε τον unsigned short int (min: 0, max: 65535):       1
> Δώσε τον signed long int (min: -2147483648, max: 2147483647):   1
> Δώσε τον unsigned long int (min: 0, max: 4294967295):   1
> Δώσε τον signed int (min: -2147483648, max: 2147483647):        1
> Δώσε τον unsigned int (min: 0, max: 4294967295):        1
> Ο επόμενος signed short int του 0 είναι ο 1
> Ο επόμενος unsigned short int του 1 είναι ο 2
> Ο επόμενος signed long int του 1 είναι ο 2
> Ο επόμενος unsigned long int του 1 είναι ο 2
> Ο επόμενος signed int του 1 είναι ο 2
> Ο επόμενος unsigned int του 1 είναι ο 2
> Segmentation fault
> john at salatas:~/Projects/C/limits>

To output που παίρνεις για την signed short μεταβλητή  σου, δεν έχει σχέση με 
την τιμή που της έδωσες.

http://www.cplusplus.com/reference/clibrary/cstdio/scanf.html

Άλλαξε τα δύο πρώτα scanf σε:
				scanf("%hd", &intSignedShort);
				...
				scanf("%hu", &intUnsignedShort);

Για τον ίδιο λόγο, αν και δεν σκάει, άλλαξε τα δύο scanf που αφορούν long σε:
				scanf("%ld", &intSignedLong);
				...
				scanf("%lu", &intUnsignedLong);

Και για λόγους προτίμησης :-) , ξέχνα την scanf και παίξε καλύτερα με την 
fgets και μετά με την atol.

/Άλκης




More information about the Linux-greek-users mailing list