• Downloads
  • ! Read Me !
  • Μαθήματα
  • Φοιτητικά
  • Τεχνικά Θέματα
  • Συζητήσεις
  • Happy Hour!
  • About THMMY.gr
 V  < 
Search:  
Welcome, Guest. Please login or register.
June 18, 2025, 16:26:35 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.
June 18, 2025, 16:26:35 pm

Login with username, password and session length

Αναζήτηση

Google

THMMY.gr Web
Πρόσφατα
H Στοά των Off Topic
by Nikos_313
[Today at 08:53:31]

[Μεταφορά και Διανομή ΗΕ]...
by tzortzis
[Today at 07:55:05]

Πρακτική Άσκηση ΤΗΜΜΥ 201...
by chris_p30
[Today at 00:45:33]

Ισραήλ - Ιράν: Πόλεμος στ...
by Katarameno
[June 17, 2025, 21:32:50 pm]

[Ψηφιακά Ολοκληρωμένα Κυκ...
by tzortzis
[June 17, 2025, 21:25:42 pm]

[Εφ.Θερμοδυναμική] Γενικέ...
by PAPARI69
[June 17, 2025, 20:59:13 pm]

[Γραφική] Λυμένα θέματα
by okanpala
[June 17, 2025, 18:56:22 pm]

Τι ακούτε αυτήν τη στιγμή...
by Katarameno
[June 17, 2025, 14:25:00 pm]

Αντικατάστασης πυκνωτή σε...
by george14
[June 17, 2025, 13:58:20 pm]

Πότε θα βγει το μάθημα; -...
by tzortzis
[June 17, 2025, 13:19:53 pm]

Αποτελέσματα Εξεταστικής ...
by george14
[June 17, 2025, 12:08:25 pm]

[ΨEE] Γενικές απορίες και...
by Juror8
[June 17, 2025, 12:06:57 pm]

[Οργάνωση Υπολογιστών] Γε...
by RAFI
[June 16, 2025, 22:46:54 pm]

[Σ.Π.Η.Ε.] Γενικές απορίε...
by Nikos_313
[June 16, 2025, 19:49:00 pm]

[ΘΤΠΑ] Γενικές απορίες κα...
by Nikos_313
[June 16, 2025, 16:56:56 pm]

[Αρχές Οικονομίας] Να επι...
by _Trob
[June 16, 2025, 13:28:21 pm]

[Σ.Α.Π.Γ.] Εργασία 2025
by Nikos_313
[June 16, 2025, 12:13:45 pm]

[Διανεμημένη Παραγωγή] Γε...
by Διάλεξις
[June 16, 2025, 01:56:37 am]

[Σ.Π.Η.Ε.] Παλιά θέματα -...
by nmpampal
[June 15, 2025, 06:43:15 am]

Το thmmy.gr στο instagram...
by Mr Watson
[June 15, 2025, 00:50:23 am]
Στατιστικά
Members
Total Members: 9965
Latest: Poli
Stats
Total Posts: 1426712
Total Topics: 31711
Online Today: 231
Online Ever: 2093
(April 17, 2025, 08:47:49 am)
Users Online
Users: 78
Guests: 107
Total: 185
anon
ptranis
Κaraflodaimonas
dem05
DLHERRO
Tsomp
johnnypap
stavros0201
Anonikos
asemas
statiris
ArchieHadCells
PrincessConsuela
rspappas
sassi
Giannis_Kako
Mr Watson
Billyskotsikas
Tserk
evax
Agnotobouri
prizas
al3xts
marilita
Soto Gonzalez
mikrosdia
KZerenidis
mariajuana
ismini.h
sunagrida
Xontroulis
JustPK
d0xa
triligouras
vlasiosv
plapas
Lykaonia
matrozos
rafa98p
jimalexoud
alexiosmara
mike1996
Potest
ariadnipm
evangeliaap
angelos
marnas
boulionis
gkaramp
summersunshine
stavrosk
varvoutis
aafroditi
nikos_matall
stergiosb
kostas.13v
Domnious
Haralampos
Pakapis5
pavlaras
Nikos_313
nikd
dimitris papadopoulos
thomasdt
κοτζακ
soti
valentini
Oxi
Polychronia K
tasos_ntv
asimomyti
idchatzi
andripappa
spoun
Εμφάνιση

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

Νέα!
  Όταν ανεβάζουμε φωτογραφίες στις Ανακοινώσεις και Έκτακτα νέα, βάζουμε τη μεγαλύτερη πλευρά 400 (width=400 ή height=400 ). π.χ. [img height=400 (κλείνει η αγκύλη) 
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 5151 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...