jimbakl Δημοσ. 27 Νοεμβρίου 2010 Δημοσ. 27 Νοεμβρίου 2010 καλημέρα σας. Είμαι καινούργιος γενικά στον προγραμματισμό και έχω μια άσκηση που δεν μπορω να την λυσω... εχω ένα αρχειο (num.txt) που περιεχει νουμερα στης μορφης: 1 4 7 2 12 3 23 21 67 ....... 54, θέλω να βρω το άθροισμα τους, το πλήθος των αριθμών , αλλα και τους αριθμούς αυτούς. μήπως μπορείτε να βοηθήσετε;;; οριστε ο πηγαίος μου κώδικας αλλά δεν λειτουρει... είμαι ακόμα αρχάριος, αν είναι το λάθος μου χαζό συγχωρέστε με... #include<stdio.h> #include<math.h> main(){ float sum , num; int i; i=1; sum=0; FILE*infile; infile=fopen("num.txt","r+"); fscanf(infile," %f",&num); while(num!=NULL){ sum=sum+num; printf("o %dos arithmos einai %f\n",i,num); printf("to athroisma ton arithmon mexri ton %do arithmo einai %.3f",i,sum); FILE*infile; infile=fopen("num.txt","r+"); fscanf(infile," %f",&num); i++; fclose(infile); } fclose(infile); } έβαλα την συνθήκη num!=NULL γιατί θελω να σταματανε οι επαναλήψεις όταν δεν πάρει αριθμό απο το αρχείο αλλά και πάλι το πρόγραμμα δεν σταματάει ποτέ γιατί με το fscanf παίρνω πάντα τον 2ο αριθμο του αρχείου... μήπως ξέρετε τι μπορώ να κάνω;;; Βασικά έχω ένα θέμα με το fscanf, δηλαδή, δεν ξέρω πως με έναν βρόχο θα μπορέσω να διαβάσω όλα τα στοιχεία ενώς αρχείου....... και πάλι συγνώμη για τον χρόνο σας , αλλά τώρα μαθαίνω...
thanos713 Δημοσ. 27 Νοεμβρίου 2010 Δημοσ. 27 Νοεμβρίου 2010 Μάλλον αυτό θα θες: >#include<stdio.h> int main(void) { float sum=0, num; int i=1; FILE *infile = fopen("num.txt","r"); while(!feof(infile)) { fscanf(infile,"%f ",&num); sum += num; printf("O %dos arithmos einai %f\n",i,num); printf("To athroisma ton arithmon mexri ton %do arithmo einai %.3f\n",i,sum); i++; } fclose(infile); return 0; }
Evgenios1 Δημοσ. 27 Νοεμβρίου 2010 Δημοσ. 27 Νοεμβρίου 2010 >/* xscanf function Return Value On success, the function returns the number of items succesfully read. This count can match the expected number of readings or be less -even zero- in the case of a matching failure. In the case of an input failure before any data could be successfully read, EOF is returned. */ int _tmain(int argc, _TCHAR* argv[]) { ... while(fscanf(file,"%f",&num) != EOF) { printf("%f\n",num); } return 0; } Η δημοσίευση μηνυμάτων σε αυτό το forum χρησιμοποιώντας greeklish χαρακτήρες, ΑΠΑΓΟΡΕΥΕΤΑΙ!
Επισκέπτης Δημοσ. 28 Νοεμβρίου 2010 Δημοσ. 28 Νοεμβρίου 2010 Μάλλον αυτό θα θες: >#include<stdio.h> int main(void) { float sum=0, num; int i=1; FILE *infile = fopen("num.txt","r"); while(!feof(infile)) { fscanf(infile,"%f ",&num); sum += num; printf("O %dos arithmos einai %f\n",i,num); printf("To athroisma ton arithmon mexri ton %do arithmo einai %.3f\n",i,sum); i++; } fclose(infile); return 0; } Ο παραπάνω κώδικας είναι λανθασμένος. Σε αντίθεση με άλλες γλώσσες (όπως πχ. PHP) στην C πάντα καλούμε την feof μετά από κάποιο I/O function (fgets, fscanf κτλ.) Διάβασε εδώ για περισσότερες πληροφορίες: http://www.drpaulcarter.com/cs/common-c-errors.php#4.2
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.