Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ[ΟΚ]

...IDE, compilers, κλπ

Συντονιστής: konnn

Re: Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ[ΟΚ]

Δημοσίευσηαπό thodoris_turtle » 27 Ιαν 2009, 19:50

Nisok έγραψε:
thodoris_turtle έγραψε:

Κώδικας: Επιλογή όλων

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct agent
{
char name[40];
int code;
double height;
}agent1;
int search(FILE *fptr,agent agent1); // Στο search δεν θα βάζει το αρχείο αλλά θα το φορώνεις σε ένα πίνακα και θα βάζεις το πίνακα.
int main()
{


char numstr[81];
FILE *fptr;
int anazitisi;
//clrscr();
if((fptr=fopen("struct1.rec","ab"))==NULL)
{
printf("Can't open file agents.rec");
exit(1);
}
do
{
printf("\nEnter Name:"); /* get name.*/
gets(agent1.name); // Θα χρησιμοποιήσεις scanf σε όλα τα gets.
printf("\nEnter number:");
gets(numstr); // Περιττό θα βάλεις scanf('%d',&numstr) και το numstr θα το κάνεις int.
agent1.code=atoi(numstr);
printf("\nEnter height:");
gets(numstr);
agent1.height=atof(numstr); // Το ίδιο με το πιο πάνω

fwrite(&agent1,sizeof(agent1),1,fptr); /*write struct to file*/
printf("\n");
printf("Add another agent (y/n)?:");

}while(getche()=='y');
fclose(fptr);
getch();
printf("\n");
if((fptr=fopen("struct1.rec","rb"))==NULL)
{
printf("Can't open file struct1.rec");
getch();
exit(1);
}
while(fread(&agent1,sizeof(agent1),1,fptr)==1) // Αυτό δεν πρέπει να ισχύει! Το fread θα το κάνεις μέχρι να βρείς eof ( end of file)
{
printf("Name:%s\n",agent1.name);
printf("Number:%d\n",agent1.code);
printf("Height:%f\n",agent1.height);
}
fclose(fptr);
getch();

anazitisi=search(fptr,agent1); // Θα το αλλάξεις όπως σου έγραψα
if(anazitisi==0)
printf("Den entopistike\n");
else
printf("Entopistike stin thesi %d",anazitisi);
return 0;
}

int search(FILE *fptr,agent agent1)
{
int flag,kodikos,position;

fclose(fptr); // Θα τα αλλάξεις ΟΛΑ αυτά.
fptr=fopen("struct1.rec","r");
flag=0;
position=0;
printf("Dose ton kodiko pros anazitisi:");
scanf("%d",&kodikos);
while((fread(&agent1),sizeof(agent1),1,fptr)==1)&&(flag==0)
{
position++;
if(agent1.code==kodikos)
{
flag=1;
printf("%s\n",agent1.name);
printf("%d\n",agent1.code);
printf("%f\n",agent1.height);
}
}
if(flag==0)
return 0;
else
return(position); // Δεν θέλει περένθεση
}





Γενικά δες τα σχόλια που έβαλα.
Φίλε όλη η anazitisi είναι για τα μπάζα. Όπως σου είπα θα φορτώνεις το αρχείο σε ένα πίνακα τύπου agent και τα ψάχνεις σε αυτόν.
Επίσης τώρα το είδα δεν θα γράφεις μια μια τις δομές στο αρχείο , αλλά θα βάζεις μέσα όλο το πίνακα όταν το γεμίσεις.
Στη συνέχεια ΑΜΑ θέλεις θα πηγαίνεις το curson του αρχείο στη θέση αυτή με fseek.


ενταξη θα κοιταξω τα σχολια σου δεν θυμαμε πως θα περασω το αρχειο σε εναν πινακα τυπου δομης δεδομενων
Η ζωή είναι κενή χωρίς ιδέες. Δεν υπάρχει μεγαλύτερη χαρά από τον αγώνα στο όνομά τους.

Φιντέλ Κάστρο Ρους
31 Ιούλη του 2007
Άβαταρ μέλους
thodoris_turtle
punkTUX
punkTUX
 
Δημοσιεύσεις: 187
Εγγραφή: 28 Αύγ 2008, 15:18
Τοποθεσία: Άνω Γλυφάδα
Εκτύπωση

Re: Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ[ΟΚ]

Δημοσίευσηαπό linuxman » 27 Ιαν 2009, 19:55

Φίλε @thodoris_turtle θα μπορούσες εάν λύθηκε το πρόβλημα σου να βάλεις ένα [ΕΠΙΛΥΘΗΚΕ] και να πατήσεις και ένα κουμπάκι όπως αναφέρεται εδώ
viewtopic.php?f=2&t=1142 όπου Το θέμα έχει επιλυθεί
Οδηγίες προς Νεοεισερχόμενους
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Linux Mint 17.1 Rebecca 3.13.0-37-generic 64bit (el_GR.UTF-8, X-Cinnamon cinnamon)
3 Intel Core i5-2310M CPU @ 2.10GHz ‖ RAM 3866 MiB ‖ Dell Inc. 0D7C51 - Dell Inc. Dell System Vostro 3750
4 Intel 2nd Generation Core Processor Family Integrated Graphics [8086:0116] {i915}
5 wlan0: Intel Centrino Wireless-N 1030 [Rainbow Peak] [8086:008a] (rev 34) ⋮ eth0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 06)
http://www.greeklug.gr
Άβαταρ μέλους
linuxman
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10378
Εγγραφή: 10 Μάιος 2008, 20:41
Τοποθεσία: Thessaloniki / Macedonia / Greece
Εκτύπωση

Re: Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ[ΟΚ]

Δημοσίευσηαπό thodoris_turtle » 04 Φεβ 2009, 14:05

συγνωμη αλλα δεν μπορω να γραψω απεριοριστο κειμενο στον τιτλο για να βαλω οτι το προβλημα επιλυθηκε


Γλωσσα C++--Προβλημα-απορία σχετικα με τα επιπεδα προσβασης(private,public,protected ) στα member μιας κλασης
Κώδικας: Επιλογή όλων


#include<string>
#include<vector>
#include<iostream>
#include<fstream>

using namespace std;

class Person{
public:
string name_;
int age_;

Person(string n,int a)
{
name_=n;
age_=a;
}
};

int main()
{
vector<Person> addressbook;

const int linesize=100;
char input[linesize];
int age;

for(int i=0;i<5;i++)
{
cout<<"Enter Name:";
cin.getline(input,linesize);

cout<<"Enter Age:";
cin>>age;

addressbook.push_back(Person(input,age));

cin.getline(input,linesize);

}

ofstream fout("address.txt");
if(fout==0)
{
cout<<"Error! cannot open file address.txt"<<endl;
return 10;
}

cout<<"Writing results to file address.txt"<<endl;

for(int j=0;j<addressbook.size();j++)
{
fout<<addressbook[j].name_<<" is "
<<addressbook[j].age_<<" years old"<<endl;
}

//close file

fout.close();
return 0;
}

/*
class Person{
private:
string name_;
int age_;
public:
Person(string n,int a)
{
name_=n;
age_=a;
}
};


mou emfanizi to akoloutho error oti to _name einai private ti na kanw ;
*/

Η ζωή είναι κενή χωρίς ιδέες. Δεν υπάρχει μεγαλύτερη χαρά από τον αγώνα στο όνομά τους.

Φιντέλ Κάστρο Ρους
31 Ιούλη του 2007
Άβαταρ μέλους
thodoris_turtle
punkTUX
punkTUX
 
Δημοσιεύσεις: 187
Εγγραφή: 28 Αύγ 2008, 15:18
Τοποθεσία: Άνω Γλυφάδα
Εκτύπωση

Re: Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ[ΟΚ]

Δημοσίευσηαπό ftso » 04 Φεβ 2009, 15:04

thodoris_turtle έγραψε:συγνωμη αλλα δεν μπορω να γραψω απεριοριστο κειμενο στον τιτλο για να βαλω οτι το προβλημα επιλυθηκε

Δες εδώ (viewtopic.php?f=2&t=3101).
Δεν χρειάζεται πλέον να προσθέσεις κάποια λέξη στον τίτλο...
Άβαταρ μέλους
ftso
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 6409
Εγγραφή: 12 Μάιος 2008, 13:40
Τοποθεσία: Αθήνα
IRC: ftso
Εκτύπωση

Re: Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ[ΟΚ]

Δημοσίευσηαπό thodoris_turtle » 07 Απρ 2009, 19:51

Θελω να ρωτησω κατι εχω οριση την ακολουθη δομη γιατι στην συνεχεια μεσω της fwrite και fread θα γραψω και θα διαβασω τις εγγραφες της δομης μου

θελω λοιπον να ρωτησω κατι προσπαθω να υλοποιησω μια συναρτηση με το ονομα delete_record η οποια προφανος θα πραγματοποιη διαγραφη μιας συγκεκριμενης εγγραφης για την δομη μου ο κωδικας που εχω γι αυτο ειναι ο εξης

Κώδικας: Επιλογή όλων







if(parag1.code==rec_no)
{



parag1.code=0;
parag1.pelatis[rec_no]='\0';
parag1.date[rec_no]='\0';
parag1.code_eidous=0;
parag1.posotita=0;

fwrite(&parag1,sizeof(parag1),1,fptr);

}





φυσικα την μεταβλητη rec_no θα την δινει ο χρηστης απο το πληκτρολογιο κανω call αυτην την συναρτηση δινω τον αριθμο αλλα δεν κανει τπτ . καμια ιδεα ?


ευχαριστω εκ των προτερων για τον χρονο σας :)
Η ζωή είναι κενή χωρίς ιδέες. Δεν υπάρχει μεγαλύτερη χαρά από τον αγώνα στο όνομά τους.

Φιντέλ Κάστρο Ρους
31 Ιούλη του 2007
Άβαταρ μέλους
thodoris_turtle
punkTUX
punkTUX
 
Δημοσιεύσεις: 187
Εγγραφή: 28 Αύγ 2008, 15:18
Τοποθεσία: Άνω Γλυφάδα
Εκτύπωση

Re: Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ[ΟΚ]

Δημοσίευσηαπό Nisok » 07 Απρ 2009, 20:19

Δεν κάνει κάτι γιατί λές στη εντολή fwrite, ουσιαστικά, να γράψει μηδενικά στο σημείο που τυχαία βρίσκεται ο κερσορας.

Δύο λύσεις στο θέμα είναι.
Πρώτη Λύση ( για πολλές καταχωρήσεις)
-. Να ξέρεις το μέγεθος των δομών σου και να μετράς με fseek στο σημείο που βρίσκνταν η δομή και να την γεμίζεις μηδενικά Αλλά έτσι θα κατέληγες να έχεις ένα αρχείο γεμάτο τρύπες.Για αυτό πρέπει να έχεις μια μεταβλητή πίνακα που θα κρατάς τα σημεία που έχεις αδειάσει και θα γράφεις σε αυτά. Λίγο πολύπλοκο κάνε την δεύτερη λύση.

Δεύτερη λύση.(για λίγες καταχωρησεις)
-. Όταν σβήνεις μια δομή, θα κατεβάζεις στην θέση της την επόμενη, και στην θέση της επόμενης την επόμενή της και ούτο καθ' εξής. Στο τέλος μόνο θα ανανεώνεις όλο το αρχείο με μια εντολή. Έτσι έχω κάνει σχεδόν όλα μου τα προγράμματα του είδους.
Άβαταρ μέλους
Nisok
Διαχειριστής
Διαχειριστής
 
Δημοσιεύσεις: 2637
Εγγραφή: 25 Ιαν 2009, 15:00
Τοποθεσία: /home
IRC: nisok
Εκτύπωση

Re: Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ[ΟΚ]

Δημοσίευσηαπό thodoris_turtle » 09 Απρ 2009, 19:10

ok thanx θα το ψαξω και αμα ειναι θα σας πω ξανα ευχαριστω
Η ζωή είναι κενή χωρίς ιδέες. Δεν υπάρχει μεγαλύτερη χαρά από τον αγώνα στο όνομά τους.

Φιντέλ Κάστρο Ρους
31 Ιούλη του 2007
Άβαταρ μέλους
thodoris_turtle
punkTUX
punkTUX
 
Δημοσιεύσεις: 187
Εγγραφή: 28 Αύγ 2008, 15:18
Τοποθεσία: Άνω Γλυφάδα
Εκτύπωση

Re: Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ[ΟΚ]

Δημοσίευσηαπό thodoris_turtle » 11 Απρ 2009, 10:58

Σορι που το λεω αλλα μηπως ξερεις κανενα tutorial για τις τεχνικες που μπορουν να με βοηθησουν για να κανω κατι τετοιο

ας πουμε με την χρηση της fseek() πως θα διαγραψω μια εγγραφη απο το struct ? :cry:


Edit Post:

Εγω προσπαθω με την εξης φιλοσοφια να γινετε η διαγραφη μιας εγγραφης απο την δομη . ο χρηστης θα επιλεγη ποια εγγραφη θελει να διαγραψει. αν μια δομε εχει δυο εγγραφες ας πουμε και κωδικους κλειδιων 1 και 2 αμα ο χρηστης δωσει το 1 θα γινετε delete η εγγραφη 1η αμα δωση 2 delete η 2η εγγραφη κοκ

ο κωδικας που εχω το οποιο ξερω οτι ειναι προβληματικος και με αυτα που κανω κανω μπουρδες αλλα απλα προσπαθω να κανω μια μικρη προσπαθεια . τελος παντον

εχω τον εξης κωδικα :

Κώδικας: Επιλογή όλων

printf("Dose ton kodiko tis eggrafis pros diegrafi:");
scanf("%d",&rec_no);
fseek( fptr,(rec_no-1)*sizeof(parag1),SEEK_SET);
printf("\n");
printf("\n");







fwrite(&parag1,sizeof(parag1),1,fptr);

οντος ετσι οπως το εχω κανει δουλευει απλα πρεπει να τις διαγραφω πραγματικα τις εγγραφες και να μην κανω αυτες τις βλακειες(πειραματισμους ) που κανω τωρα lol

προβληματισμος:

ας πουμε αμα δωσει ο χρηστης για κωδικο ισο με 1 θελω να γινετε αντικατασταση με την 2 δηλαδη η εγγραφη 2 να μπενει στην θεση της 1 ετσι ωστε να ειμαι καλημενος να γινετε σωστα η διαγραφη :roll:
Η ζωή είναι κενή χωρίς ιδέες. Δεν υπάρχει μεγαλύτερη χαρά από τον αγώνα στο όνομά τους.

Φιντέλ Κάστρο Ρους
31 Ιούλη του 2007
Άβαταρ μέλους
thodoris_turtle
punkTUX
punkTUX
 
Δημοσιεύσεις: 187
Εγγραφή: 28 Αύγ 2008, 15:18
Τοποθεσία: Άνω Γλυφάδα
Εκτύπωση

Re: Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ[ΟΚ]

Δημοσίευσηαπό sokoban4ever » 11 Απρ 2009, 12:57

Δες εδώ
http://www.crasseux.com/books/ctutorial ... level.html
για την lseek() αντί για την fseek()
Για structures δές
http://www.crasseux.com/books/ctutorial ... tml#struct

πάντως για η fflush() δεν είναι ότι καλύτερο διότι δεν είναι δεδομένο ότι θα λειτουργήσει σε linux(είναι undefined)
όταν παίρνεις χαρακτήρες απο το πληκτρολόγιο σε κονσόλα.
(αν και γίνεται είναι πιό πολύ 'χακεριά" παρά σωστή λύση)
για αυτό άμα σου "κολλάει" η scanf() χρησιμοποία την fgets κλπ

Γενικά κοίτα
The GNU C Programming Tutorial:
http://www.crasseux.com/books/ctutorial/index.html
GCC 4.3.3 Manual
http://gcc.gnu.org/onlinedocs/gcc-4.3.3/gcc/
Θέλουμε και μπορούμε να έχουμε μια καλύτερη ζωή και όσο θα ζούμε θα προσπαθούμε να την αποκτήσουμε ακόμα και αν πεθάνουμε προσπαθώντας, και αν κάποια στιγμή λιγίσουμε έχουμε το επίπεδο να πούμε κουράστηκα λίγο να ,να ξαποστάσουμε , ώστε να συνεχίσουμε πάλι δυνατοί ξανά.

Μήνυμα με αγάπη και αληλλεγγύη σε όλους τους ανθρώπους από όλους τους λαούς , ιδίως του Ελληνικού.
Άβαταρ μέλους
sokoban4ever
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 2331
Εγγραφή: 13 Φεβ 2009, 02:22
Εκτύπωση

Re: Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ[ΟΚ]

Δημοσίευσηαπό thodoris_turtle » 11 Απρ 2009, 13:18

wow thanx θα το κοιταξω μολις τωρα και παλι ευχαριστω :)

ποια βιβλιοθηκη πρεπει να κανω include για την lseek(); ?
Η ζωή είναι κενή χωρίς ιδέες. Δεν υπάρχει μεγαλύτερη χαρά από τον αγώνα στο όνομά τους.

Φιντέλ Κάστρο Ρους
31 Ιούλη του 2007
Άβαταρ μέλους
thodoris_turtle
punkTUX
punkTUX
 
Δημοσιεύσεις: 187
Εγγραφή: 28 Αύγ 2008, 15:18
Τοποθεσία: Άνω Γλυφάδα
Εκτύπωση

ΠροηγούμενηΕπόμενο

  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Εφαρμογές για Ανάπτυξη Λογισμικού

cron