linuxs Δημοσ. 20 Ιουνίου 2010 Δημοσ. 20 Ιουνίου 2010 Το τηλέφωνο γιατί δεν αλλάζει και παραμένει ο ίδιος αριθμός? > #include <stdio.h> #include <stdlib.h> #include <string.h> struct Details{ char l_name[81]; char f_name[81]; char email[81]; int tel; }; int main(void){ FILE *infile; struct Details det; int cont_num, cont_stats; infile=fopen("lala.txt","r+"); if(infile==NULL){ printf("file didn' t found.\n"); exit(1); } printf("file found.\n"); fscanf(infile,"%d %d", &cont_num, &cont_stats); printf("There are %d contacts.\n", cont_num); printf("There are %d statistics in every contact.\n", cont_stats); while(fscanf(infile,"%s %s %s %d", det.f_name, det.l_name, det.email, &det.tel)!=EOF){ printf("first name: %s\tlast name: %s\te-mail: %s\ttelephone: %d\t\n", det.f_name, det.l_name, det.email, det.tel); } return 0; }
bnvdarklord Δημοσ. 20 Ιουνίου 2010 Δημοσ. 20 Ιουνίου 2010 Μηπως δεν αλλάζει και στο αρχείο txt που ανοίγεις?
linuxs Δημοσ. 20 Ιουνίου 2010 Μέλος Δημοσ. 20 Ιουνίου 2010 Μηπως δεν αλλάζει και στο αρχείο txt που ανοίγεις? όχι αλλάζει...
imitheos Δημοσ. 20 Ιουνίου 2010 Δημοσ. 20 Ιουνίου 2010 Ίσως να μην δημιούργησα σωστά το αρχείο αλλά δείχνει να δουλεύει σε μένα. Το αρχείο έχει > 10 5 (Δεν είδα να κάνουν κάτι εκτός απο το να εμφανίζονται) Linus Torvalds [email protected] 12345 Richard Stallman [email protected] 34567 Theo Raadt [email protected] 56789 Και το πρόγραμμα εμφανίζει > file found. There are 10 contacts. There are 5 statistics in every contact. first name: Linus last name: Torvalds e-mail: [email protected] telephone: 12345 first name: Richard last name: Stallman e-mail: [email protected] telephone: 34567 first name: Theo last name: Raadt e-mail: [email protected] telephone: 56789 Οπότε το τηλέφωνο αλλάζει όπως έπρεπε.
linuxs Δημοσ. 21 Ιουνίου 2010 Μέλος Δημοσ. 21 Ιουνίου 2010 Ίσως να μην δημιούργησα σωστά το αρχείο αλλά δείχνει να δουλεύει σε μένα.Το αρχείο έχει > 10 5 (Δεν είδα να κάνουν κάτι εκτός απο το να εμφανίζονται) Linus Torvalds [email protected] 12345 Richard Stallman [email protected] 34567 Theo Raadt [email protected] 56789 Και το πρόγραμμα εμφανίζει > file found. There are 10 contacts. There are 5 statistics in every contact. first name: Linus last name: Torvalds e-mail: [email protected] telephone: 12345 first name: Richard last name: Stallman e-mail: [email protected] telephone: 34567 first name: Theo last name: Raadt e-mail: [email protected] telephone: 56789 Οπότε το τηλέφωνο αλλάζει όπως έπρεπε. έχεις απόλυτο δίκιο...αυτό παίζει και σε μένα...κάνε μου μια χάρη, δοκίμασε με κανονικά σταθερά τηλέφωνα πχ. 2651089453 κτλ.
bnvdarklord Δημοσ. 21 Ιουνίου 2010 Δημοσ. 21 Ιουνίου 2010 έχεις απόλυτο δίκιο...αυτό παίζει και σε μένα...κάνε μου μια χάρη, δοκίμασε με κανονικά σταθερά τηλέφωνα πχ. 2651089453 κτλ. Ο μεγιστος integer αριθμός ειναι 2.147.483.647 οποτε μαλλον φταιει το overflow που συμβαινει. Βαλε τα τηλέφωνα ως string καλυτερα ή unsined long αν θες να ειναι αριθμοι.
jtsc21 Δημοσ. 21 Ιουνίου 2010 Δημοσ. 21 Ιουνίου 2010 έχεις απόλυτο δίκιο...αυτό παίζει και σε μένα...κάνε μου μια χάρη, δοκίμασε με κανονικά σταθερά τηλέφωνα πχ. 2651089453 κτλ. βαλτο long long int για να έχεις τουλάχιστον 8 bytes διαθέσιμα Aν δε σε καλύπτει ούτε αυτό, κάνε αυτό που σου είπε ο αποπάνω..
linuxs Δημοσ. 21 Ιουνίου 2010 Μέλος Δημοσ. 21 Ιουνίου 2010 βαλτο long long int για να έχεις τουλάχιστον 8 bytes διαθέσιμαAν δε σε καλύπτει ούτε αυτό, κάνε αυτό που σου είπε ο αποπάνω.. και εγω σκέφτηκα να τα περάσω σαν strings απλά είχα την απορία...oπότε overflow....ευχαριστώ,..
georgemarios Δημοσ. 21 Ιουνίου 2010 Δημοσ. 21 Ιουνίου 2010 πάντως, conceptually, είναι λάθος να αποθηκεύεις τον αρ. τηλεφώνου ως αριθμό γιατί απλά δεν είναι αριθμός (δεν τον πολλαπλασιάζεις, δεν τον προσθέτεις, δεν τον στρογγυλοποιεις). Είναι ένας κωδικός, ενα αλφαριθμιτικό, άσχετα αν οι χαρακτήρες που χρησιμοποιούνται ειναι μεταξύ 0 και 9..... Οπότε, γενικα, ο σωστός τύπος μεταβλητής για τηλέφωνα, πινς, αριθμους πιστωτικων καρτων κτλ ειναι string....
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.