Nick_Iommi Δημοσ. 26 Νοεμβρίου 2011 Δημοσ. 26 Νοεμβρίου 2011 θελω να φτιαξω 2 string απο ενα αλλο,που το πληκτρολογει ο χρηστης ,με βαση το χαρακτηρα '/' με λιγα λογια αν ο χρηστης πληκτρολογησει www.google.gr/index.html θελω να αποθηκευεται σε μια μεταβλητη char host[100] το string www.google.gr kai σε μια αλλη char page[100] το string /index.html Εδω ειναι μια προσπαθεια που εκανα για να αποθηκευσω στο host το καινουριο string αλλα δεν δουλευει.. #include <stdio.h> #include <string.h> int main(void) { char url[100]; char host[100]; int flag,i; printf("Enter url"); scanf("%s",url); for(i=0;i<strlen(url);i++) { if(url=='/') flag=i; break; } for(i=0;i<flag);i++){ host=url; } printf("%s\n",host); return 0; } ευχαριστω για τη βοηθεια...
Nick_Iommi Δημοσ. 26 Νοεμβρίου 2011 Μέλος Δημοσ. 26 Νοεμβρίου 2011 να σαι καλα!!! ))))))) μηπως μπορω να το κανω να διαβαζει και το κενο?γτ αν παταω space δεν το τρεχει σωστα εμφανιζει sagmentation fault Άσκηση 2 εργαστήριο δικτύων ceid ? poy to katalaves???:P
migf1 Δημοσ. 26 Νοεμβρίου 2011 Δημοσ. 26 Νοεμβρίου 2011 Για να διαβάζει και κενά αντικατέστησε την scanf() με την fgets() ... εκτός αν έχεις την υπομονή να διαβάσεις στην τεκμηρίωση της scanf πως να συμπεριλαμβάνει επιθυμητούς χαρακτήρες (δεν το θυμάμαι απ' έξω, γιατί εγώ δεν τη χρησιμοποιώ ποτέ... νομίζω με αγκύλες)
παπι Δημοσ. 26 Νοεμβρίου 2011 Δημοσ. 26 Νοεμβρίου 2011 > int main(int,char**) { char host[100],http[100]; scanf("%[^/]/%[^\n]",host,http); printf("Host:%s\nHttp:%s",host,http); return 0; }
firewalker Δημοσ. 26 Νοεμβρίου 2011 Δημοσ. 26 Νοεμβρίου 2011 Δεν ξέρω αν ξεφεύγει από τον σκοπό της άσκησης αλλά για είσοδο από τον χρήστη η πλειοψηφία προγραμμάτων χρησιμοποιεί την GNU ReadLine. Όταν μιλάς για C μπροστά σε καθηγητές μην χρησιμοποιείς τον όρο string. Μπορεί να βγάλουν καπνό από τα αυτιά... :mrgreen:
migf1 Δημοσ. 26 Νοεμβρίου 2011 Δημοσ. 26 Νοεμβρίου 2011 ... Όταν μιλάς για C μπροστά σε καθηγητές μην χρησιμοποιείς τον όρο string. Μπορεί να βγάλουν καπνό από τα αυτιά... :mrgreen: Μπορεί να λέει c-string όμως
firewalker Δημοσ. 26 Νοεμβρίου 2011 Δημοσ. 26 Νοεμβρίου 2011 Μπορεί να λέει c-string όμως Όχι. char arrays πρέπει να λέει. :P
migf1 Δημοσ. 26 Νοεμβρίου 2011 Δημοσ. 26 Νοεμβρίου 2011 Πέρα από την πλάκα, τα char arrays είναι διαφορετικό πράγμα από τα strings. Ως έννοια είναι υπερσύνολα των strings, παρόλο που στην πράξη σε απευθείας αντιπαράθεση ενδέχεται να έχουν μικρότερο μέγεθος (κατά 1 char). Λέγοντας string σε C context, το μυαλό ενστικτωδώς πάει σε nul-terminated array of chars, που είναι και τυπικά η σωστή ορολογία, και μάλιστα με 1 L το "nul"... Αλλά δεν χρειάζεται να είναι κανείς τόσο τυπικός, "string" ή "c-string" είναι μια χαρά όροι και τις καταλαβαίνουν όλοι εξίσου (πλην ίσως μερικών αρχάριων)
παπι Δημοσ. 26 Νοεμβρίου 2011 Δημοσ. 26 Νοεμβρίου 2011 Τυπικοτητες στη C ? >int main(int,char**) { int i =0; for(;i < 1000; i++,printf("%c","xa0"[rand()%3]), !(i % 50) ? printf("\n") : 0); return 0; }
migf1 Δημοσ. 26 Νοεμβρίου 2011 Δημοσ. 26 Νοεμβρίου 2011 Τυπικοτητες στη C ? >int main(int,char**) { int i =0; for(;i < 1000; i++,printf("%c","xa0"[rand()%3]), !(i % 50) ? printf("\n") : 0); return 0; } Τυπικά αυτό ονομάζεται "code golfing"
Nick_Iommi Δημοσ. 29 Νοεμβρίου 2011 Μέλος Δημοσ. 29 Νοεμβρίου 2011 #include <stdio.h>#include <string.h> int main(void) { char url[100]; char host[100]; int flag,i; printf("Enter url"); scanf("%s",url); for(i=0;i<strlen(url);i++) { if(url=='/') {flag=i; break; } } for(i=0;i<flag;i++){ host=url; } printf("%s\n",host); return 0; } Οπως ειπα κ πριν ο κωδικας αυτος ξεχωριζει πχ.το www.google.gr απ το www.google.gr/index Αν στη δευτερη εκτελεση πληκτρολογησει ο χρηστης ενα πιο μικρο url πχ www.in.gr το host που τυπωνεται ειναι www.in.gr και διπλα σκουπιδια απ το προηγουμενο μεγαλυτερο υποθετω.Κανενας τροπος να μην εμφανιζονται τα σκουπιδια?
Chief90 Δημοσ. 29 Νοεμβρίου 2011 Δημοσ. 29 Νοεμβρίου 2011 Οπως ειπα κ πριν ο κωδικας αυτος ξεχωριζει πχ.το www.google.gr απ το www.google.gr/index Αν στη δευτερη εκτελεση πληκτρολογησει ο χρηστης ενα πιο μικρο url πχ www.in.gr το host που τυπωνεται ειναι www.in.gr και διπλα σκουπιδια απ το προηγουμενο μεγαλυτερο υποθετω.Κανενας τροπος να μην εμφανιζονται τα σκουπιδια? να κανείς αρχικοποίηση των string σου πριν από κάθε φορά που μπαίνουν url
migf1 Δημοσ. 29 Νοεμβρίου 2011 Δημοσ. 29 Νοεμβρίου 2011 Δεν είδα τον κώδικα (βάλε τον ανάμεσα σε [ code] [/ code] tags, χωρίς τα κενά, για να διαβάζεται) αλλά δοκίμασε να αρχικοποιήσεις τα 2 c-strings σου... > char url[100] = {'\0'}; char host[100] = {'\0'}; ΥΓ. Ανεξάρτητα από το αν φταίει αυτό ή όχι, καλό είναι να την κάνεις συνήθεια αυτή την αρχικοποίηση.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα