Star_Light Δημοσ. 3 Φεβρουαρίου 2013 Δημοσ. 3 Φεβρουαρίου 2013 Βασικά ρωτάω επειδη έγραψα λίγο κώδικα ο οποίος άν έχεις πχ εισοδο : Kwstas Kwstopoulos τοτε θα έχεις σαν έξοδο : Kwstopoulos, K. #include <stdio.h> #include <string.h> #include <ctype.h> #define STR_LEN 100 void read_line( char * , int ); int main(void) { char s1[STR_LEN+1] = {'\0'}; char s2[STR_LEN+1] = {'\0'}; char tmp[STR_LEN + 1]= {'\0'}; printf(" Give the first name : "); read_line( s1 , STR_LEN); printf("\n Give the last name : "); read_line( s2 , STR_LEN); strcpy ( tmp , s1 ); strcpy ( s1 , s2 ); strcat( s1 , ", "); strcpy ( s2 , tmp); printf("Name: %s" , s1); putchar( (int) s2[0]); putchar('.'); return 0; } void read_line(char name[] , int n) { int ch , i=0; while( (ch = getchar()) != '\n' ) { if( i ) ch = tolower( ch ); if( !isalpha(ch)) { printf(" \n *Rejected* '%c' is not a letter " , ch); continue; } if(i < n ) name[i++] = ch; } name[i] = '\0'; }
Frod0 Δημοσ. 3 Φεβρουαρίου 2013 Δημοσ. 3 Φεβρουαρίου 2013 Υπάρχει κάποια παρόμοια συνάρτηση με την os της python ;
migf1 Δημοσ. 5 Φεβρουαρίου 2013 Δημοσ. 5 Φεβρουαρίου 2013 Υπάρχει κάποια παρόμοια συνάρτηση με την os της python ; Τι κάνει η os στην python? Μα δεν ειναι το ιδιο με την getchar που ειχαμε συζητησει παλια??? οτι δηλαδη ειναι πιο σωστο να λες int c getchar( c ) παρα char c . Αν δεν σκοπεύεις να χρησιμοποιήσεις "μη char" τιμές μέσα στο s, δεν χρειάζεσαι το cast (άσε που γίνεται έτσι κι αλλιώς implicitly). 1
Frod0 Δημοσ. 5 Φεβρουαρίου 2013 Δημοσ. 5 Φεβρουαρίου 2013 Τι κάνει η os στην python? This module provides a portable way of using operating system dependent functionality.
parsifal Δημοσ. 5 Φεβρουαρίου 2013 Δημοσ. 5 Φεβρουαρίου 2013 Δεν είναι συνάρτηση, είναι ολόκληρη βιβλιοθήκη με πλειάδα συναρτήσεων για κλήσεις προς το underlying OS. Ποιες από όλες τις συναρτήσεις του python.os module σε ενδιαφέρουν; Βλέποντας στα πεταχτά τί περίπου περιλαμβάνει, δε νομίζω πως υπάρχει 1-προς-1 αντιστοιχία... :-/
Frod0 Δημοσ. 5 Φεβρουαρίου 2013 Δημοσ. 5 Φεβρουαρίου 2013 Θα με ενδιέφερε περισσότερο να έβρισκα την αντίστοιχη της os.system .
parsifal Δημοσ. 5 Φεβρουαρίου 2013 Δημοσ. 5 Φεβρουαρίου 2013 Η system της βιβλιοθήκης stdlib.h είναι αυτή που ψάχνεις: http://www.cplusplus.com/reference/cstdlib/system/
Frod0 Δημοσ. 5 Φεβρουαρίου 2013 Δημοσ. 5 Φεβρουαρίου 2013 Η system της βιβλιοθήκης stdlib.h είναι αυτή που ψάχνεις: http://www.cplusplus.com/reference/cstdlib/system/ Αυτό έψαχνα! Ευχαριστώ
Star_Light Δημοσ. 24 Φεβρουαρίου 2013 Δημοσ. 24 Φεβρουαρίου 2013 (επεξεργασμένο) Καλησπέρα παιδια τι κανουμε ??? Έχω μερικες αποριες στον Προεπεξεργαστη .... τι εννοει με την φράση : It is reliance on a preprocessor makes C (along with C++) unique among major programming languages ? Έπειτα οταν λέει οτι ο προεπεξεργαστης εχει μικρη γνωση της C και ως αποτελεσμα αυτου ειναι ευκολο να δημιουργηθουν μη εγκυρα προγραμματα καθως εκτελουνται οι οδηγιες του ενα παραδειγμα πανω σε αυτο θα μπορουσε να ειναι και κατι σαν αυτο #define NUM 1000 ;; Οταν λέει επισης : Another use of __func__ : it can be passed to a function to let it know the name of the function that called it. Ένα παράδειγμα σε αυτο???? Τι εννοει??? Επεξ/σία 25 Φεβρουαρίου 2013 από Star_Light
imitheos Δημοσ. 25 Φεβρουαρίου 2013 Δημοσ. 25 Φεβρουαρίου 2013 Έπειτα οταν λέει οτι ο προεπεξεργαστης εχει μικρη γνωση της C και ως αποτελεσμα αυτου ειναι ευκολο να δημιουργηθουν μη εγκυρα προγραμματα καθως εκτελουνται οι οδηγιες του ενα παραδειγμα πανω σε αυτο θα μπορουσε να ειναι και κατι σαν αυτο #define NUM 1000 ;; #include <stdio.h> #define main kotsos int main(void) { return 0; } Εννοεί ακριβώς αυτό που λέει δηλαδή ότι ο preprocessor δεν γνωρίζει από C και απλά κάνει λεξικογραφική αντικατάσταση. Στο παραπάνω κώδικα ο gcc δίνει μήνυμα λάθους "undefined reference to `main'" δηλαδή δεν βρίσκει main. Ο preprocessor έκανε μια περασιά το αρχείο και όπου βρήκε τη λέξη main την αντικατέστησε με τη λέξη kotsos χωρίς να πει "ρε c η main χρειάζεται οπότε δεν θα την αλλάξω" γιατί ακριβώς δεν ξέρει από C. Οταν λέει επισης : Another use of __func__ : it can be passed to a function to let it know the name of the function that called it. Ένα παράδειγμα σε αυτο???? Τι εννοει??? #include <stdio.h> void g(void); int main(void) { g(); return 0; } void g(void) { printf("I am %s()\n", __func__); } Έξοδος: I am g() 1
bird Δημοσ. 25 Φεβρουαρίου 2013 Δημοσ. 25 Φεβρουαρίου 2013 (επεξεργασμένο) Οταν λέει επισης : Another use of __func__ : it can be passed to a function to let it know the name of the function that called it. Ένα παράδειγμα σε αυτο???? Τι εννοει??? Δες κι αυτό: #include <stdio.h> void g(const char* func) { fprintf(stderr,"Called by %s().\n",func); if(func == __func__) return; g(__func__); return; } void f() { g(__func__); } main() { g(__func__); f(); return 0; } Με έξοδο: Called by main(). Called by g(). Called by f(). Called by g(). Process exited normally. Press any key to continue . . . edit: Έκανα μια αλλαγή για να φανεί περισσότερο η χρήση της... Επεξ/σία 25 Φεβρουαρίου 2013 από bird 1
jimisvog Δημοσ. 25 Φεβρουαρίου 2013 Δημοσ. 25 Φεβρουαρίου 2013 Πως μπορω να περασω εναν δισδυαστατο πινακα σε συναρτηση και να επεξεργαστω τα στοιχεια? Αν μπορει καποιος να μ πει την κληση και την δηλωση της συναρτησης.. ο πινακας ειναι Α[Ν][Ν].. Ειναι τετραγωνος πινακας και το μεγεθος το δινει στην main ο χρηστης... Ευχαρστω..
Timonkaipumpa Δημοσ. 26 Φεβρουαρίου 2013 Δημοσ. 26 Φεβρουαρίου 2013 Τον περνάς ως τρισδιάστατο. Δηλαδή, περνάς μία αναφορά στον πίνακα. π.χ. char** arr2d; /* ........ */ void foo(char*** inputArr2d) { /* .... */ }
Star_Light Δημοσ. 26 Φεβρουαρίου 2013 Δημοσ. 26 Φεβρουαρίου 2013 (επεξεργασμένο) Ευχαριστώ @bird .... ωραιο το παράδειγμα σου αν και μετα ειδα οτι και εσυ άλλαξες σε const char* αντι σκέτου char* εδω μου παραπονέθηκε και μενα ο μεταγλωτιστης οτι δεν μπορει να κανει το conversion. υ.γ Δεν έβγαζα με τιποτα την μετάφραση της αλλης χρησης του __func__ ωστε να καταλαβω τι θελει να πει.... ειχα υποψιαστει βεβαια οτι μπορεις να το χρησιμοποιησεις σαν ορισμα ωστε να δεις απο ποια συναρτηση καλειται μια αλλη . #include <stdio.h> void g(const char* func) { printf("g() Called by %s().\n",func); if(func == __func__) return; g(__func__); return; } void f(const char* func) { printf("f() Called by %s().\n",func); g(__func__); } int main(void) { g(__func__); f(__func__); // Same with f(__FUNCTION__); return 0; } υ.γ2 __FUNCTION__ <=> __func__ Επεξ/σία 26 Φεβρουαρίου 2013 από Star_Light
Erevis Δημοσ. 26 Φεβρουαρίου 2013 Δημοσ. 26 Φεβρουαρίου 2013 (επεξεργασμένο) Τον περνάς ως τρισδιάστατο. Δηλαδή, περνάς μία αναφορά στον πίνακα. π.χ. char** arr2d; /*........*/ void foo(char*** inputArr2d){/*....*/} Αν δε θέλει ν'αλλάξει το πού δείχνει ο pointer arr2d δε χρειάζεται να περαστεί by-reference (σε 3πλο αστεράκι δηλαδή), τα στοιχεία του πίνακα ούτως ή άλλως by-reference περνούν αφού o arr2d και ο inputArr2d στην ίδια θέση μνήμης θα δείχνουν. Διπλός pointer είναι αρκετός. Επίσης, αν ο πίνακας δεν είναι δυναμικά δεσμευμένος ΔΕΝ γίνεται να τον περάσεις σε διπλό pointer (τουλάχιστον δεν ειναι standard). Ο μόνος τρόπος να τον περάσεις σε συνάρτηση είναι να υπάρχει στο όρισμα το μέγεθος της 2ης διάστασης του πίνακα. π.χ void processArray(int inputArray[][20], unsigned rows, unsigned columns) {} int main() { int array[10][20]; processArray(array, 10, 20); return 0; } Επεξ/σία 27 Φεβρουαρίου 2013 από Erevis 1
Προτεινόμενες αναρτήσεις