• Downloads
  • ! Read Me !
  • Μαθήματα
  • Φοιτητικά
  • Τεχνικά Θέματα
  • Συζητήσεις
  • Happy Hour!
  • About THMMY.gr
 V  < 
Search:  
Welcome, Guest. Please login or register.
October 19, 2025, 23:32:42 pm

Login with username, password and session length
Links
  Thmmy.gr portal
   Forum
   Downloads
   Ενεργ. Λογαριασμού
   Επικοινωνία
  
  Χρήσιμα links
   Σελίδα τμήματος
   Βιβλιοθήκη Τμήματος
   Elearning
   Φοιτητικά fora
   Πρόγραμμα Λέσχης
   Πρακτική Άσκηση
   Ηλεκτρονική Εξυπηρέτηση Φοιτητών
   Διανομή Συγγραμμάτων
   Ψηφιακό Καταθετήριο Διπλωματικών
   Πληροφορίες Καθηγητών
   Instagram @thmmy.gr
   mTHMMY
  
  Φοιτητικές Ομάδες
   ACM
   Aristurtle
   ART
   ASAT
   BEAM
   BEST Thessaloniki
   EESTEC LC Thessaloniki
   EΜΒ Auth
   IAESTE Thessaloniki
   IEEE φοιτητικό παράρτημα ΑΠΘ
   SpaceDot
   VROOM
   Panther
  
Πίνακας Ελέγχου
Welcome, Guest. Please login or register.
October 19, 2025, 23:32:42 pm

Login with username, password and session length

Αναζήτηση

Google

THMMY.gr Web
Πρόσφατα
Πότε θα βγει το μάθημα; -...
by Tasos Bot
[Today at 22:35:04]

[Τομέας Ηλεκτρονικής] Μαθ...
by PolarBear
[Today at 21:47:06]

Παράταση Δηλώσεων Συμμετο...
by Nikos_313
[Today at 19:21:37]

[Δομές Δεδομένων] Γενικές...
by Nikos_313
[Today at 19:19:52]

ΟΜΑΔΑ ΠΟΔΟΣΦΑΙΡΟΥ ΗΜΜΥ 1
by Nikos_313
[Today at 19:12:26]

Επιλογή βιβλίου για Στοχα...
by Nikos_313
[Today at 19:11:19]

[Μετάδοση Θερμότητας] Γεν...
by Nikos_313
[Today at 19:05:29]

[Διανεμημένη Παραγωγή] Γε...
by Sôreèn
[Today at 17:31:51]

[Τηλεπ. Συστήματα ΙΙΙ] Γε...
by _Trob
[Today at 11:56:27]

[Θ.Υ.Α.] Επικαιρότητα, απ...
by _Trob
[Today at 11:55:45]

Τι ακούτε αυτήν τη στιγμή...
by Katarameno
[October 18, 2025, 12:32:46 pm]

[Ηλεκτρονική Ι] Εργαστήρι...
by RivenT
[October 17, 2025, 21:52:37 pm]

Αποτελέσματα Εξεταστικής ...
by supersonic pepega
[October 17, 2025, 17:28:27 pm]

[Μεταφορά και Διανομή ΗΕ]...
by chatzikys
[October 17, 2025, 16:52:29 pm]

[Ηλεκτρική Οικονομία] Γεν...
by Mr Watson
[October 17, 2025, 12:24:12 pm]

Δηλώσεις Μαθημάτων Χειμερ...
by chatzikys
[October 17, 2025, 09:30:44 am]

[Γεωηλεκτρομαγνητισμός] Ν...
by theofr
[October 16, 2025, 16:08:03 pm]

[ΣΦ Ηλ-Μηχ] Γενική Συνέλε...
by Aris★
[October 16, 2025, 14:23:53 pm]

[Κεραίες και Διάδοση] Να ...
by supersonic pepega
[October 16, 2025, 13:18:03 pm]

Αρχείο Ανακοινώσεων [Arch...
by Mr Watson
[October 16, 2025, 12:51:36 pm]
Στατιστικά
Members
Total Members: 10110
Latest: dimkon
Stats
Total Posts: 1428678
Total Topics: 31838
Online Today: 618
Online Ever: 2093
(April 17, 2025, 08:47:49 am)
Users Online
Users: 23
Guests: 159
Total: 182
Nekt
gpr000
jimefti
tasos gourd
teles
mprizakias
panagiot
stavros0201
kakousios
Anatolim
George_RT
giorgos_skl
iliaspapas
chris123
lapin
Hyperlaz02
HlektrikhPatata
Εμφάνιση

Νέα για πρωτοετείς
Είσαι πρωτοετής;... Καλώς ήρθες! Μπορείς να βρεις πληροφορίες εδώ. Βοήθεια για τους καινούργιους μέσω χάρτη.
Κατεβάστε εδώ το Android Application για εύκολη πρόσβαση στο forum.
Ανεβάζετε τα θέματα των εξετάσεων στον τομέα Downloads με προσοχή στα ονόματα των αρχείων!

Νέα!
Συμβουλές καλής χρήσης του φόρουμ: Youtube embed code and links, Shoutbox, Notify, ...
Δείτε περισσότερα εδώ...
THMMY.gr > Forum > Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα > Περί Υπολογιστών... > Software > Προγραμματισμός (C, VB, Delphi, PHP, ASP...) > C / C++ / C# (Moderators: chatzikys, PolarBear) > Πρόβλημα στο άνοιγμα αρχείου στη C
0 Members and 1 Guest are viewing this topic.
Pages: 1 [2] 3 Go Down Print
Author Topic: Πρόβλημα στο άνοιγμα αρχείου στη C  (Read 5667 times)
Nessa NetMonster
Καταστραμμένος
********
Posts: 7044


Ιούνιος 1999 - 19/7/2009


View Profile
Re: Πρόβλημα στο άνοιγμα αρχείου στη C
« Reply #15 on: May 02, 2008, 12:38:49 pm »

Όχι, το αρχείο υπάρχει και δεν το έχω ανοίξει με κάτι άλλο.
Logged

Διεθνιστική Εργατική Αριστερά
Διεθνιστική Αριστερά
Εργατική Αριστερά
RedNet Θεσσαλονίκης
Nessa NetMonster
Καταστραμμένος
********
Posts: 7044


Ιούνιος 1999 - 19/7/2009


View Profile
Re: Πρόβλημα στο άνοιγμα αρχείου στη C
« Reply #16 on: May 02, 2008, 13:11:38 pm »

Το ίδιο ακριβώς γίνεται και με το Borland... Sad
Logged

Διεθνιστική Εργατική Αριστερά
Διεθνιστική Αριστερά
Εργατική Αριστερά
RedNet Θεσσαλονίκης
Nessa NetMonster
Καταστραμμένος
********
Posts: 7044


Ιούνιος 1999 - 19/7/2009


View Profile
Re: Πρόβλημα στο άνοιγμα αρχείου στη C
« Reply #17 on: May 02, 2008, 18:42:21 pm »

Λοιπόν κατάλαβα τι γίνεται, αλλά είναι πολύ παράξενο...

Βάζοντας breakpoints στις δύο εντολές μέσα στο if ανακάλυψα ότι μεταφέρεται εκεί η εκτέλεση (άρα το αρχείο δεν ανοίγει) αλλά η printf δεν εκτελείται, και η exit αντί να τερματίσει το πρόγραμμα και να με γυρίσει στον editor μου βγάζει το σφάλμα που προανέφερα...

Δε μπορώ να καταλάβω πώς γίνεται από ένα σημείο και πέρα να μην εκτελούνται οι printf Shocked
Logged

Διεθνιστική Εργατική Αριστερά
Διεθνιστική Αριστερά
Εργατική Αριστερά
RedNet Θεσσαλονίκης
BOBoMASTORAS
Veteran
Καταστραμμένος
******
Posts: 6082


It just doesn't get any easier! It gets worse...


View Profile
deleted
« Reply #18 on: May 02, 2008, 19:14:27 pm »

deleted
« Last Edit: June 14, 2015, 19:40:05 pm by BOBoMASTORAS » Logged

Της γενιάς μου βασιλιά,
μην κατέβεις τα σκαλιά.
Πιες αθάνατο νερό
να νικήσεις τον καιρό.

http://tools.ietf.org/html/rfc1149
The only reason we invent robots
Nessa NetMonster
Καταστραμμένος
********
Posts: 7044


Ιούνιος 1999 - 19/7/2009


View Profile
Re: Πρόβλημα στο άνοιγμα αρχείου στη C
« Reply #19 on: May 02, 2008, 19:26:52 pm »

Θα ψάξω για κάποιον πιο καινούριο...

Ρε παιδιά αλλάζω διάφορα μέσα στο πρόγραμμα, άσχετα, και να ήσασταν από μια μεριά να βλέπετε τι κάνει... κάπου παραπάνω διαβάζω από ένα άλλο αρχείο με την fread, μέσα σε ένα for loop. Τη μια, η printf δούλευε πριν το loop και μετά δε δούλευε. Την άλλη, άλλαξα τον τύπο του pointer που διάβαζα από unsigned char σε signed char και η printf δούλευε κανονικά. Μετά έκανα μια αλλαγή που δε θυμάμαι τι ήταν (αλλά κάτι παρόμοιο ήταν) και διαπίστωσα έκπληκτη ότι ξαφνικά περίμενε να του δώσω τα δεδομένα από το πληκτρολόγιο αντί να τα διαβάζει από το αρχείο!

Αφού κοίταζα το help να δω μήπως είχα κάνει λάθος στη σύνταξη της fread και έβαλα τον pointer του αρχείου στη θέση του pointer της μεταβλητής και αντίστροφα! Γιατί προς στιγμήν κάτι τέτοιο νόμιζα ότι συνέβη Huh
Logged

Διεθνιστική Εργατική Αριστερά
Διεθνιστική Αριστερά
Εργατική Αριστερά
RedNet Θεσσαλονίκης
mademlis
Καταξιωμένος/Καταξιωμένη
***
Gender: Male
Posts: 144


Poison....


View Profile
Re: Πρόβλημα στο άνοιγμα αρχείου στη C
« Reply #20 on: May 04, 2008, 02:30:54 am »

Λοιπόν, λίγο πριν, ή λίγο μετά τον ορισμό του file pointer, κάνεις new ή malloc, ή ορίζεις μια μεταβλητή με τον Pointer της οποίας κάνεις διάφορα "καλούδια". Σε εκείνη τη μεταβλητή, είναι πολύ πιθανό να έχεις υπερβεί τα όρια, ή να έκανες αθέμιτες ενέργειες με τον pointer. Αν σου είναι εύκολο, ρίξε λίγο τον κώδικα.

Μια πολύ καλή τακτική για να λύσεις τα προβλήματα με τους pointer είναι.... η αποφυγή τους.
Αν μιλάμε για c++ ΜΕ STL, μπορείς να μην χρησιμοποιήσεις ΠΟΤΕ pointer....


Quote from: BOBoMASTORAS on May 02, 2008, 19:14:27 pm
Μάλλον έχεις βγει εκτός μνήμης κάπου παραπάνω στο κώδικα. Σε τόσο παλιούς compiler αν βγεις εκτός μνήμης καταλαβαίνεις το πραγματικό νόημα της έννοιας απροσδιόριστη συμπεριφορά.

Μή νομίζεις ότι και σε καινούριους δεν υπάρχουν τα προβλήματα αυτά. Πάντα, εξαρτάται απο το τι χαζομάρα κάνεις. Έχω φάει πάρα πολλές ώρες στο να λύσω προβλήματα που οφείλονταν ακριβώς σε χαζομάρες με το χειρισμό μνήμης, με 3-4 διαφορετικούς compilers. Κάθε φορά, ακόμα και σε πολύ καινούριους compilers, η συμπεριφορά ήταν απροσδιόριστη.
Χαρακτηριστικό παράδειγμα σήμερα. Προσθέταμε 1-2 χαρακτήρες σε ένα υπάρχον char *. Και ως δια μαγείας... άλλαζε τιμή μια άλλη μεταβλητή.....!!!! (σε VC 2005 compiler παρακαλώ....)
« Last Edit: May 04, 2008, 02:39:24 am by mademlis » Logged

Μένουμε Ελλάδα
Πάμε Χαλκιδική
Πάμε Καλαμίτσι
Nessa NetMonster
Καταστραμμένος
********
Posts: 7044


Ιούνιος 1999 - 19/7/2009


View Profile
Re: Πρόβλημα στο άνοιγμα αρχείου στη C
« Reply #21 on: May 04, 2008, 19:40:29 pm »

Η υπομονή μου τελείωσε... αν μπορείτε εσείς να μου βρείτε τι φταίει, καλώς, αλλιώς τα παρατάω Roll Eyes

Το πρόγραμμα υποτίθεται ότι ανοίγει ένα αρχείο wav και αποθηκεύει σε ένα αρχείο txt τα νούμερα (integers) που αντιστοιχούν στην κωδικοποίηση PCM. Πέρα από ένα "σουλούπωμα" στα ονόματα των μεταβλητών για να φαίνεται τι αντιπροσωπεύουν, δεν το έχω αλλάξει από προχτές.

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

#define pi 3.14159

void main(){

   long int i,wholenum=0,formatnum=0,channels=0,fs=0,soundsize=0,ms=0,bps=0,datanum=0;
   int *soundi;
   unsigned char *k;
   signed char *soundc,*c;
   FILE *fp,*fpt;

   if ((fp=fopen("input1.wav","rb"))==NULL){
      printf("Den anoigei to arxeio eisodou.");
      exit(NULL);
   }
   for (i=0;i<4;i++){
      fread(c,1,1,fp);
   }
   for (i=0;i<4;i++){
      fread(c,1,1,fp);
      k=c;
      wholenum+=(*k)*pow(256,i);
   }
   for (i=0;i<8;i++){
      fread(c,1,1,fp);
   }
   for (i=0;i<4;i++){
      fread(c,1,1,fp);
      k=c;
      formatnum+=(*k)*pow(256,i);
   }
   for (i=0;i<2;i++){
      fread(c,1,1,fp);
   }
   for (i=0;i<2;i++){
      fread(c,1,1,fp);
      k=c;
      channels+=(*k)*pow(256,i);
   }
   for (i=0;i<4;i++){
      fread(c,1,1,fp);
      k=c;
      fs+=(*k)*pow(256,i);
   }
   for (i=0;i<4;i++){
      fread(c,1,1,fp);
      k=c;
      soundsize+=(*k)*pow(256,i);
   }
   for (i=0;i<2;i++){
      fread(c,1,1,fp);
      k=c;
      ms+=(*k)*pow(256,i);
   }
   ms=ms/channels;
   for (i=0;i<2;i++){
      fread(c,1,1,fp);
      k=c;
      bps+=(*k)*pow(256,i);
   }
   for (i=16;i<formatnum;i++){
      fread(c,1,1,fp);
   }
   for (i=0;i<4;i++){
      fread(c,1,1,fp);
   }
   for (i=0;i<4;i++){
      fread(c,1,1,fp);
      k=c;
      datanum+=(*k)*pow(256,i);
   }
   if (ms==1){
      if ((soundc=malloc(datanum))==NULL){
         printf("Den yparxei arketh mnhmh gia ton hxo.\n");
         exit(NULL);
      }
      for (i=0;i<datanum;i++){
         fread(soundc+i,1,1,fp);
      }
   }else{
      if ((soundi=malloc(datanum))==NULL){
         printf("Den yparxei arketh mnhmh gia ton hxo.\n");
         exit(NULL);
      }
      for (i=0;i<datanum;i++){
         fread(soundc,1,1,fp);
         if (i%2)
            soundi[i/2]+=(int)256*(*soundc);
         else
            soundi[i/2]=(int)(*soundc);
      }
   }
   fclose(fp);
   fpt=fopen("sound1.txt","w");
   if (fpt==NULL){
      printf("Den anoigei to arxeio exodou.");
      exit(NULL);
   }
   for (i=0;i<ceil(datanum/2);i++){
      fprintf(fpt,"%d ",soundi[i]);
   }
   fclose(fpt);
}
« Last Edit: May 04, 2008, 20:28:41 pm by Nessa NetMonster » Logged

Διεθνιστική Εργατική Αριστερά
Διεθνιστική Αριστερά
Εργατική Αριστερά
RedNet Θεσσαλονίκης
mademlis
Καταξιωμένος/Καταξιωμένη
***
Gender: Male
Posts: 144


Poison....


View Profile
Re: Πρόβλημα στο άνοιγμα αρχείου στη C
« Reply #22 on: May 04, 2008, 20:11:36 pm »

Ελα,
το λάθος είναι καραμπινάτο.....

int *soundi;
unsigned char *k;
signed char *soundc,*c;

Δύο λύσεις
Με την πρώη λύση, βγάλε όλα τα *
Aκολούθως, σε όλες τις fread, αντι για soundi, βάζεις &soundi
αντι για *k, βάεις σκέτο k

Εναλλακτικά αλλάζεις τη δήλωση ως εξής:
int soundi[1];
   unsigned char k[1];
   signed char soundc[1],c[1];

και αφήνεις το πρόγραμμα ως έχει.


Το λάθος είναι ότι ΔΕΝ είχες δεσμεύσει τη μνήμη..... Wink
Logged

Μένουμε Ελλάδα
Πάμε Χαλκιδική
Πάμε Καλαμίτσι
Nessa NetMonster
Καταστραμμένος
********
Posts: 7044


Ιούνιος 1999 - 19/7/2009


View Profile
Re: Πρόβλημα στο άνοιγμα αρχείου στη C
« Reply #23 on: May 04, 2008, 20:22:25 pm »

Η πρώτη λύση απορρίπτεται, γιατί χρειάζομαι την εντολή k=c.

Κάτσε... δηλαδή μου λες ότι δε μπορώ να χρησιμοποιήσω pointers κατευθείαν; Δε δεσμεύει αυτόματα μια θέση μνήμης για 1 μεταβλητή αυτού του τύπου; Shocked

Μα σε όλα τα παραδείγματα του Κορτέση κατευθείαν τους χρησιμοποιούσε... Huh
Logged

Διεθνιστική Εργατική Αριστερά
Διεθνιστική Αριστερά
Εργατική Αριστερά
RedNet Θεσσαλονίκης
Nessa NetMonster
Καταστραμμένος
********
Posts: 7044


Ιούνιος 1999 - 19/7/2009


View Profile
Re: Πρόβλημα στο άνοιγμα αρχείου στη C
« Reply #24 on: May 04, 2008, 20:27:02 pm »

Μπα, δε γίνεται ούτε με τη δεύτερη λύση... όταν το κάνω έτσι όπως λες μου βγάζει error στην εντολή k=c. Λέει "Lvalue required in function main".

Τα παρατάω Roll Eyes

Ευχαριστώ πάντως για τη βοήθεια.
Logged

Διεθνιστική Εργατική Αριστερά
Διεθνιστική Αριστερά
Εργατική Αριστερά
RedNet Θεσσαλονίκης
Καμένος
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 2322


View Profile
Re: Πρόβλημα στο άνοιγμα αρχείου στη C
« Reply #25 on: May 04, 2008, 23:20:03 pm »

Quote from: Nessa NetMonster on May 04, 2008, 20:22:25 pm
Η πρώτη λύση απορρίπτεται, γιατί χρειάζομαι την εντολή k=c.

Κάτσε... δηλαδή μου λες ότι δε μπορώ να χρησιμοποιήσω pointers κατευθείαν; Δε δεσμεύει αυτόματα μια θέση μνήμης για 1 μεταβλητή αυτού του τύπου; Shocked

Μα σε όλα τα παραδείγματα του Κορτέση κατευθείαν τους χρησιμοποιούσε... Huh

Ο pointer είναι μια διεύθυνση. Όταν δηλώνεις έναν pointer δε σημαίνει ότι δεσμεύει τη μνήμη σε αυτή τη διεύθυνση.. Πρέπει να κάνεις δυναμική δέσμευση για να χρησιμοποιήσεις κάποιο χώρο μνήμης μέσω pointer..
Logged
marauber
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 2353


Ι will forgive but I won't forget...


View Profile
Re: Πρόβλημα στο άνοιγμα αρχείου στη C
« Reply #26 on: May 05, 2008, 01:22:27 am »

Πάντως διαβάζοντας το τόπικ, όλα αυτά μου φαίνονται τρομερά αναχρονιστικά. Γιατί να μη χρησιμοποιηθεί η C++ με την STL; Όλα αυτά τα προβλήματα δεν θα είχαν καν εμφανιστεί.
Logged

It never rains but it pours
-------------------------------------------------------
The Spartans do not ask how many but where they are
Nessa NetMonster
Καταστραμμένος
********
Posts: 7044


Ιούνιος 1999 - 19/7/2009


View Profile
Re: Πρόβλημα στο άνοιγμα αρχείου στη C
« Reply #27 on: May 05, 2008, 01:59:25 am »

...η ποια με την ποιά; Tongue Cheesy
Logged

Διεθνιστική Εργατική Αριστερά
Διεθνιστική Αριστερά
Εργατική Αριστερά
RedNet Θεσσαλονίκης
Emfanever
Καταστραμμένος
********
Gender: Male
Posts: 5284


Πολίτης


View Profile
Re: Πρόβλημα στο άνοιγμα αρχείου στη C
« Reply #28 on: May 05, 2008, 02:07:34 am »

Έχω μια απορία. Έψαξα στο ιντερνετ αλλά δε πέτυχε τπτ.

Πώς μπορώ να καλέσω/ανοίξω ένα αρχείο .exe  μέσα από ένα πρόγραμμα C?

Κάπου διάβασα ότι γίνεται με τη system() αλλά δε τα κατάφερα... Undecided

thanks
Logged
Nessa NetMonster
Καταστραμμένος
********
Posts: 7044


Ιούνιος 1999 - 19/7/2009


View Profile
Re: Πρόβλημα στο άνοιγμα αρχείου στη C
« Reply #29 on: May 05, 2008, 13:16:29 pm »

Μπα, τελικά ήταν απλό... δεν υπήρχε λάθος στους pointers, απλά προσπαθούσα να διαβάσω περισσότερα δεδομένα από όσα υπήρχαν. Αντικατέστησα την εντολή

for (i=0;i<datanum;i++){

με τις εξής

i=-1;
while(!feof(fp)){
i++;

και δούλεψε.
Logged

Διεθνιστική Εργατική Αριστερά
Διεθνιστική Αριστερά
Εργατική Αριστερά
RedNet Θεσσαλονίκης
Pages: 1 [2] 3 Go Up Print
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Scribbles2 | TinyPortal © Bloc | XHTML | CSS
Loading...