Σελίδα 1 από 3 1 2 3 ΤελευταίαΤελευταία
Εμφάνιση αποτελεσμάτων : 1 έως 10 από 21

Θέμα: Arduino array pointer

  1. #1
    Μέλος Το avatar του χρήστη Fire Doger
    Όνομα
    Στέφανος
    Εγγραφή
    Jan 2015
    Περιοχή
    .
    Μηνύματα
    1.519

    Προεπιλογή Arduino array pointer

    Καλησπέρα.

    Επειδή μάλλον δεν έχω ξεκάθαρη εικόνα του πως διαχειρίζεται η C τους pointer, array κλπ είχα ένα θεματάκι.
    Ήθελα από ένα char array γνωρίζοντας τον pointer να αφαιρέσω τα γράμματα μετά την τελεία (file extension).
    Και επειδή θα το κάνει πολλές φορές να γίνεται σε function μόνο αυτό.

    Μετά από αρκετά bug το έκανα με διάφορους τρόπους πχ



    Αλλά δεν ήθελα να χαλάσω τα αρχικά δεδομένα γιατί έρχεται από βιβλιοθήκη και διάβασα ότι μπορεί και άλλοι pointer να δείχνουν σ αυτά.

    Το έκανα τελικά όπως παρακάτω αλλά δεν είμαι σίγουρος αν λειτουργεί καταλάθος και πόσο σωστό είναι.


    0 Not allowed! Not allowed!

  2. #2
    Μέλος Το avatar του χρήστη SProg
    Όνομα
    Σάββας
    Εγγραφή
    Mar 2014
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    2.612

    Προεπιλογή

    Aυτο εννοεις;

    Κώδικας:
    #include <string.h>
    #include <stdio.h>
    
    
    int main()
    {
       char str[] = "Test123456789.dassadsadasewrwsetrwetwet";
       char *token;
       char x;
       
       /* get the first token */
       token = strtok(str,".");
       x=strlen(token);
       token[x]='.';
       token[x+1]='\0';
       printf("%s\n", token );
        
      
       
       return(0);
    }
    Με output:

    Κώδικας:
    Test123456789.

    0 Not allowed! Not allowed!

  3. #3
    Μέλος Το avatar του χρήστη Fire Doger
    Όνομα
    Στέφανος
    Εγγραφή
    Jan 2015
    Περιοχή
    .
    Μηνύματα
    1.519

    Προεπιλογή

    Ε περίπου...
    Θέλω να μην έχει ούτε την τελεία και δεν το έχω στην μορφή [].

    Έρχεται έτσι από τη βιβλιοθήκη της SD
    Κώδικας:
    // returns a pointer to the file name
    char *File::name(void) {
      return _name;
    }
    και καταλήγει σε άλλη βιβλιοθήκη
    Κώδικας:
    bool NexText::setText(const char *buffer)
    Μια χαρά λειτουργούν και τα 2 που ανέβασα (αν και το 1ο δεν μου φαίνεται σωστό), απλώς δεν είμαι σίγουρος για πόσο τα δεδομένα είναι δεσμευμένα, μην κάθονται χωρίς λόγο στην Ram.

    0 Not allowed! Not allowed!

  4. #4
    Μέλος Το avatar του χρήστη SProg
    Όνομα
    Σάββας
    Εγγραφή
    Mar 2014
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    2.612

    Προεπιλογή

    Χωρις την τελεια ειναι ακομα πιο απλο.Αγνοεις αυτα που εγραψα για το x.

    η μορφη [] που κολλαει;


    Η strtok() παιρνει σαν ορισμα την πρωτη θεση του πινακα που της περνας και σου επιστρεφει Pointer .

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη SProg : 25-02-17 στις 22:32

  5. Ένα μέλος ευχαρίστησε τον SProg για αυτό το χρήσιμο μήνυμα:

    basilhs4 (27-02-17)

  6. #5
    Μέλος Το avatar του χρήστη Fire Doger
    Όνομα
    Στέφανος
    Εγγραφή
    Jan 2015
    Περιοχή
    .
    Μηνύματα
    1.519

    Προεπιλογή

    Ναι αλλά έτσι η strtok δεν βάζει /0 στο τέλος, στο arduino τουλάχιστον.
    Δεν είναι επικίνδυνο να πάω σε θέση +1 και να το βάλω? Αν υπάρχει κάτι μετά?

    0 Not allowed! Not allowed!

  7. #6
    Μέλος Το avatar του χρήστη SProg
    Όνομα
    Σάββας
    Εγγραφή
    Mar 2014
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    2.612

    Προεπιλογή

    Αυτο που θελεις να σπασεις/μοιρασεις/κτλ θα το περασεις σε αλλο μερος της μνημης με strcpy() ή memcpy().Ετσι εξασφαλιζεις οτι δεν θα μοιραξεις τα αρχικα σου δεδομενα ΚΑΘΟΛΟΥ.

    Αυτο που θα παρεις μετα την strtok() θα ειναι ενας pointer που θα δειχνει την αρχικη θεση του πινακα σου.


    Υ.Γ ολα αυτα γιατι ειπες οτι δεν θελεις να πειραξεις τα δεδομενα σου.Η strtok() θα παει οπου βρει '.' και θα βαλει '\0'.Εαν αυτο σε πειραζει θα πρεπει να κανεις αυτο που γραφω πανω.

    Χωρίς τίτλο.png

    1 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη SProg : 25-02-17 στις 23:18

  8. #7
    Μέλος Το avatar του χρήστη picdev
    Όνομα
    akis
    Εγγραφή
    Jul 2007
    Περιοχή
    ____
    Μηνύματα
    7.381

    Προεπιλογή

    ορίζεις το μέγεθος του πίνακα , στο σημείο που ορίζεις τη μεταβλητή του πίνακα , σε καμία περίπτωση δεν πρέπει να βάλεις κάτι μετά.

    Μπορείς να φτιάξεις ένα στρακτ και μαζι με το πίνακα να κρατάς και το μέγεθος του. Και μέσα στη συνάρτηση να περνας σαν όρισμα το στρακτ.

    Μπορείς να το κάνεις με μαλοκ αλλά θα μπλέξεις

    0 Not allowed! Not allowed!

  9. #8
    Μέλος Το avatar του χρήστη SProg
    Όνομα
    Σάββας
    Εγγραφή
    Mar 2014
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    2.612

    Προεπιλογή

    Εαν δεν τον ενοχλει να αφαιρειται η τελεια τοτε απλα καλει την strtok().Εαν δεν θελει με ΤΙΠΟΤΑ να πειραξει τα αρχικα δεδομενα τοτε πρεπει να τα περασει σε αλλο ΚΟΜΜΑΤΙ της μνημης.

    Ουσιαστικα ειναι αυτο που κανεις byte-byte με την while().

    0 Not allowed! Not allowed!

  10. #9
    Μέλος Το avatar του χρήστη SProg
    Όνομα
    Σάββας
    Εγγραφή
    Mar 2014
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    2.612

    Προεπιλογή

    Η malloc() μονο προβλημα 'μπορει' να δημιουργησει.Η χρηση της πρεπει να ειναι περιορισμενη και μονο εαν ειναι αναγκαια.

    0 Not allowed! Not allowed!

  11. #10
    Μέλος Το avatar του χρήστη picdev
    Όνομα
    akis
    Εγγραφή
    Jul 2007
    Περιοχή
    ____
    Μηνύματα
    7.381

    Προεπιλογή

    Προβλήματα δεν δημιουργεί , πρέπει να είσαι προσεκτικός αλλά είναι ο μόνος τρόπος να φτιάξεις δυναμική μνημη στη c, και να ορίζεις μεταβλητές κατά τη ροή του προγράμματος

    0 Not allowed! Not allowed!

Σελίδα 1 από 3 1 2 3 ΤελευταίαΤελευταία

Παρόμοια Θέματα

  1. Control Array σε VB.net
    By TomMan in forum Software Η/Υ
    Απαντήσεις: 2
    Τελευταίο Μήνυμα: 22-06-10, 15:21
  2. Αγορά PIR (passive infrared) Detectors σε array
    By solli144 in forum Όργανα & Εξοπλισμός
    Απαντήσεις: 1
    Τελευταίο Μήνυμα: 25-04-10, 17:07
  3. Three Element Circular Array Beam 88-108
    By radioamateur in forum Κεραίες & Καλώδια
    Απαντήσεις: 3
    Τελευταίο Μήνυμα: 01-06-08, 03:15
  4. Laser pointer
    By NUKE in forum Εξαρτήματα & Datasheets
    Απαντήσεις: 8
    Τελευταίο Μήνυμα: 20-06-06, 14:42

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας