Προγραμματισμός σε C - Λύνουμε ασκήσεις

...ασύγχρονα μαθήματα γλώσσας C

Re: Προγραμματισμός σε C - Λύνουμε ασκήσεις

Δημοσίευσηαπό linuxs » 06 Μάιος 2011, 23:39

Star_Light έγραψε:
linuxs έγραψε:Με είχε δυσκολέψει πολύ αυτή η άσκηση όταν προσπαθούσα να μάθω τα αρχεία...πραγματικά αν ξεκινάς απο το μηδέν είναι αρκετά δυσκολούτσικα! ;)


Α δεν θελω τετοια... δυσκολο? Τι δυσκολο??? εδω θα φτιαξουμε ολοκληρο προγραμμα που κανει αποκρυπτογραφησεις σε ψηφιακες υπογραφες και θα το τρεξουμε στο δικτυο :lol: :lol: :lol: :lol: :lol:

Με τα αρχεια δεν ειχα ποτε καποιο σοβαρο προβλημα. Οι τελεστες χειρισμου ρων bit απο την αλλη με δυσκολευουν ακομη και τωρα.... :shifty:


Όπως είπα ήταν δύσκολο στην αρχή...όχι τώρα! ;) χεχε :P
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Προγραμματισμός σε C - Λύνουμε ασκήσεις

Δημοσίευσηαπό Star_Light » 07 Μάιος 2011, 00:35

linuxs μιας και εισαι καλος στην C δεν μου λες τι ακριβως λαθος εχω κανει (λογικο) και δεν παιρνω εξοδο απο το παρακατω προγραμμα?????

Κώδικας: Επιλογή όλων
#include<stdio.h>
void ReadWrite(FILE *fin, FILE *fout);


enum{SUCCESS,FAIL};

int main()
{
FILE *fptr1 , *fptr2;
int reval=SUCCESS;

char filename1[]="text1";
char filename2[]="text2";

if((fptr1=fopen(filename1,"r"))==NULL)
{
printf("Den borei na anoiksei to %s.\n",filename1);
reval=FAIL;
}
else if
((fptr2=fopen("filename2","w"))==NULL)
{
printf("Den borei na anoiksei to %s.\n",filename2);
reval=FAIL;
}
else
{
ReadWrite(fptr1,fptr2);
fclose(fptr1);
fclose(fptr2);

}
return reval;
}

void ReadWrite(FILE *fin, FILE *fout)
{
char buff[100];

while(fgets(buff,100,fin)!=NULL)
fputs(buff,fout);
printf("%s",buff);
}




:( :( :( απλα θελω να αντιγραψω τα περιεχομενα του αρχειου text1 στο text2..... αφου πρωτα ανοιξει το text1 ας πουμε....
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Προγραμματισμός σε C - Λύνουμε ασκήσεις

Δημοσίευσηαπό giannosfor » 07 Μάιος 2011, 01:29

Star_Light έγραψε: απλα θελω να αντιγραψω τα περιεχομενα του αρχειου text1 στο text2

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

#include <stdio.h>

int main(int argc,char *argv[])
{
FILE *in,*out;
char buf[81];

if(in = fopen( "example.txt","r" ))
{
out = fopen( "giannis.txt","a" );
while(fgets(buf, 81, in) != NULL)
fputs(buf,out);
fclose( in );
fclose( out );
}
else
printf("Problem with the files.\n");

return 0;
}
1 Γνώσεις Linux: Καθόλου ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-58-generic 32bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.2.0-57-generic, Microsoft Windows XP Professional
3 Intel Core2 Duo CPU E4600 2.40GHz ‖ RAM 2012 MiB ‖ ASUS INC. P5Q - � P5Q
4 nVidia G94 [GeForce 9600 GT] [10de:0622] {nvidia}
5 eth0: Qualcomm Atheros AR8121/AR8113/AR8114 Gigabit or Fast Ethernet [1969:1026] (rev b0) ⋮ wlan0: 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter
Άβαταρ μέλους
giannosfor
punkTUX
punkTUX
 
Δημοσιεύσεις: 297
Εγγραφή: 24 Απρ 2011, 20:24
Τοποθεσία: Ηράκλειο
Εκτύπωση

Re: Προγραμματισμός σε C - Λύνουμε ασκήσεις

Δημοσίευσηαπό linuxs » 07 Μάιος 2011, 02:06

Δυστυχώς είμαι σε φάση χωρίς Linux για να το εκτελέσω κτλ. Τι αποτέλεσμα έχεις; Απο ότι είδα μια μικρή απορία έχω στο:
Κώδικας: Επιλογή όλων
ReadWrite(fptr1,fptr2);

...δεν το έχω χρησιμοποιήσει ποτέ έτσι! ;) Δοκίμασε με ένα Loop να διαβάζεις απο ένα αρχείο λέξη λέξη πχ. και να αποθηκεύεις σε ένα άλλο ταυτόχρονα.

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

/* se pseudokwdika */
char buf[100];
while(scanf() != EOF) {
fscanf(<apo to arxeio 1> && <auto pou diavazeis apothikeusi sto buf>);
fprintf(<apo to buf sto arxeio 2>);
}


ΠΟΛΥΥΥΥ πρόχειρα νομίζω οτι η παραπάνω λογική θα παίξει. Αν έχεις κάποιο άλλο κόλλημα ακόμη και με τα παραπάνω πές μου...

Φιλικά, Βασίλης
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Προγραμματισμός σε C - Λύνουμε ασκήσεις

Δημοσίευσηαπό giannosfor » 07 Μάιος 2011, 19:54

Το πρόβλημα σου είναι πολύ απλό
Λάθος
Κώδικας: Επιλογή όλων
((fptr2=fopen("filename2","w"))==NULL)
Σωστό
Κώδικας: Επιλογή όλων
((fptr2=fopen(filename2,"w"))==NULL)
και
Κώδικας: Επιλογή όλων
char filename1[]="text1";
char filename2[]="text2";
καλύτερα
Κώδικας: Επιλογή όλων
char filename1[]="text1.txt";
char filename2[]="text2.txt";
1 Γνώσεις Linux: Καθόλου ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-58-generic 32bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.2.0-57-generic, Microsoft Windows XP Professional
3 Intel Core2 Duo CPU E4600 2.40GHz ‖ RAM 2012 MiB ‖ ASUS INC. P5Q - � P5Q
4 nVidia G94 [GeForce 9600 GT] [10de:0622] {nvidia}
5 eth0: Qualcomm Atheros AR8121/AR8113/AR8114 Gigabit or Fast Ethernet [1969:1026] (rev b0) ⋮ wlan0: 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter
Άβαταρ μέλους
giannosfor
punkTUX
punkTUX
 
Δημοσιεύσεις: 297
Εγγραφή: 24 Απρ 2011, 20:24
Τοποθεσία: Ηράκλειο
Εκτύπωση

Re: Προγραμματισμός σε C - Λύνουμε ασκήσεις

Δημοσίευσηαπό Star_Light » 08 Μάιος 2011, 01:01

απιστευτο! ΕΥχαριστω giannisfor

ειδατε η κουραση τι κανει καμια φορα?????? δεν βλεπεις και τα πιο απλα!!!

Ευχαριστω και τα αλλα παιδια που απαντησαν....

την αντιγραφη την κανει μια χαρα πχ

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~/PROGRAMS$ cat text2
hello my man , how are you???

kostas@kostas-SSL:~/PROGRAMS$ ls -lt text2
-rw-r--r-- 1 kostas kostas 41 2011-05-08 00:54 text2


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

παρολαυτα την αντιγραφη την εκανε μια χαρα απο πανω!!!

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~/PROGRAMS$ ./arxeio2
Den borei na anoiksei to text1
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Προγραμματισμός σε C - Λύνουμε ασκήσεις

Δημοσίευσηαπό giannosfor » 08 Μάιος 2011, 01:37

Που ξέρεις ότι η επιστρεφόμενη τιμή είναι 1; το εμφανίζει κάπου;
Θες να δώσεις μια λίστα με τα αρχεία του φακέλου σου
1 Γνώσεις Linux: Καθόλου ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-58-generic 32bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.2.0-57-generic, Microsoft Windows XP Professional
3 Intel Core2 Duo CPU E4600 2.40GHz ‖ RAM 2012 MiB ‖ ASUS INC. P5Q - � P5Q
4 nVidia G94 [GeForce 9600 GT] [10de:0622] {nvidia}
5 eth0: Qualcomm Atheros AR8121/AR8113/AR8114 Gigabit or Fast Ethernet [1969:1026] (rev b0) ⋮ wlan0: 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter
Άβαταρ μέλους
giannosfor
punkTUX
punkTUX
 
Δημοσιεύσεις: 297
Εγγραφή: 24 Απρ 2011, 20:24
Τοποθεσία: Ηράκλειο
Εκτύπωση

Re: Προγραμματισμός σε C - Λύνουμε ασκήσεις

Δημοσίευσηαπό Star_Light » 09 Μάιος 2011, 00:11

giannosfor έγραψε:Που ξέρεις ότι η επιστρεφόμενη τιμή είναι 1; το εμφανίζει κάπου;
Θες να δώσεις μια λίστα με τα αρχεία του φακέλου σου



ΤΟ ΕΜΦΑΝιζει στο παράθυρο του geany "Programm exited with code:1"

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

kostas@kostas-SSL:~/PROGRAMS$ ls
arxeio arxeio.c crc.c new.c symbol.c test2.c text2
arxeio2 bits filename2 pointers symbol.o test.txt
arxeio2.c bits.c new pointers.c test2 text1


η λιστα με τα αρχεια που εχω στον φακελο.

ΜΟυ πεταει και το filename2 στο μεταξυ... που ειναι τελειως ακυρο...(γραφει και σε αυτο καποια περιεχομενα οπως και στο text2)
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Προγραμματισμός σε C - Λύνουμε ασκήσεις

Δημοσίευσηαπό Star_Light » 09 Μάιος 2011, 00:44

οκ διορθώθηκε βαζοντας αντι για filename2 απευθειας το ονομα του αρχειου text2

Κώδικας: Επιλογή όλων
((fptr2=fopen("text2","w"))==NULL)


βεβαια την αντιγραφη οπως ειπα και παραπανω την κανει κανονικα απλα οταν το τρεχω απο το τερματικο σαν ./arxeio2

δεν μου εμφανιζει κατι στο κελυφος.
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Προγραμματισμός σε C - Λύνουμε ασκήσεις

Δημοσίευσηαπό giannosfor » 09 Μάιος 2011, 09:18

Το filename2 στο δημιουργεί επειδή μάλλον δεν έχεις βγάλει τα αυτάκια.
Αντί στο fopen() να περάσεις ένα δείκτη σε συμβολοσειρά που είναι το filename2 (όπου έχεις καταχωρήση τη συμβολοσειρά "text2" που είναι και το αρχείο σου) περνάς ως συμβολοσειρά το "filename2".
Επειδή λοιπόν δεν υπάρχει αρχείο με όνομα filename2 δημιουργεί ένα και αντιγράφει τα περιεχόμενα.Είναι η δεύτερη παράμετρος που δίνεις στην fopen(),το "w".
Λογικά γι'αυτό δουλεύει όταν βάζεις κατευθείαν το "text2".Αν το έχεις αλλάξει κοίταξε μήπως ξεχνούσες να το αποθηκεύσεις και να το κάνεις compile,με αυτή τη σειρά,γι'αυτό δεν είχες τα επιθυμητά αποτελέσματα.
Μετά την αλλαγή τι εννοείς δεν εμφανιζει τιποτα το κέλυφος;Εννοείς μήνυμα λάθους η την εκτύπωση του buff;
1 Γνώσεις Linux: Καθόλου ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-58-generic 32bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.2.0-57-generic, Microsoft Windows XP Professional
3 Intel Core2 Duo CPU E4600 2.40GHz ‖ RAM 2012 MiB ‖ ASUS INC. P5Q - � P5Q
4 nVidia G94 [GeForce 9600 GT] [10de:0622] {nvidia}
5 eth0: Qualcomm Atheros AR8121/AR8113/AR8114 Gigabit or Fast Ethernet [1969:1026] (rev b0) ⋮ wlan0: 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter
Άβαταρ μέλους
giannosfor
punkTUX
punkTUX
 
Δημοσιεύσεις: 297
Εγγραφή: 24 Απρ 2011, 20:24
Τοποθεσία: Ηράκλειο
Εκτύπωση

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

Επιστροφή στο Μαθήματα C