Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ - Εφαρμογή 2

Поділитися
Вставка
  • Опубліковано 26 січ 2025

КОМЕНТАРІ • 8

  • @2004axelkick
    @2004axelkick Рік тому

    Καλημέρα. Στο 3:35 αναφέρεται "αν ο χρήστης έχει πληκτρολογήσει 3 χαρακτήρες, οι 3 πρώτες θέσεις θα έχουν τους 3 χαρακτήρες, μετά θα έχει αποθηκευθεί το
    και μετά το \0". Θα έχουμε δλδ κατάληψη 5 θέσεων; το
    δεν αντικαθίσταται από το \0 ώστε εν τέλει να έχουμε κατάληψη 4 θέσεων; Στη συγκεκριμένη άσκηση παρατηρώ πως αν πληκτρολογήσω 12345678, η συμβολοσειρά αποθηκεύεται κανονικά (φαντάζομαι πως η προτελευταία θέση καταλαμβάνεται από το
    και η τελευταία από το \0). Αν πληκτρολογήσω 123456789 η συμβολοσειρά δε χωράει να αποθηκευθεί ολόκληρη και στη θέση i-1 δε βρίσκεται το
    .
    Βάζοντας printf παρατήρησα ότι:
    1. Αν πληκτρολογήσω έως και 8 χαρακτήρες, αποθηκεύονται οι 8 χαρακτήρες, στην 9η θέση είναι το
    και στη 10η θέση το \0
    2. Αν πληκτρολογήσω ακριβώς 9 χαρακτήρες, αποθηκεύονται οι 9 χαρακτήρες, στη 10η θέση πάει το \0 και στην stdin, ίσως μπορούμε να πούμε 11η θέση, είναι το

    3. Αν πληκτρολογήσω 10 χαρακτήρες, πχ 1234567890, παρατηρώ πως στην 1η εκτέλεση της fgets εμφανίζονται οι 123456789, στη 2η εκτέλεση το 1ο στοιχείο είναι το 0 και το 2ο στοιχείο είναι το
    και το 3ο στοιχείο είναι το '\0'

  • @16bitdude36
    @16bitdude36 2 роки тому

    Το else, γιατι δε μπορει κατευθειαν να ειναι: printf("! ...%s",str);fflush(stdin)

    • @psounis
      @psounis  2 роки тому

      H διαφοροποίηση γίνεται για τη σωστή εκτύπωση του μηνύματος στις δύο περιπτώσεις.

  • @georgemantzoukis9285
    @georgemantzoukis9285 3 роки тому +1

    δάσκαλε και ένας εναλλακτικός κώδικας για την επίλυση της ασκησης:
    #include
    #include
    #include
    #define size 10
    #define buffer 100
    main()
    {
    char string[size];
    int i;
    printf("Eisigage mia simvoloseira:");
    fgets(string,buffer,stdin);
    if(strlen(string)=size)
    {
    printf("Den diavastike
    ");
    for(i=0; i

  • @red_l6634
    @red_l6634 2 роки тому

    char myString[10];
    fgets(myString, 10, stdin);
    int position = 10-1;
    for (int i = 0; i < sizeof(myString)/sizeof(char); i++)
    {
    if (myString[i]=='\0')
    {
    position = i;
    break;
    }
    }
    if (myString[position-1]=='
    ' ||getchar()=='
    ')
    {
    myString[position - 1] = '\0';
    printf("h sumboloseira xwrese oloklhrh kai einai:%s
    ", myString);
    }
    else
    {
    printf("h sumboloseira de xwrese oloklhrh. to meros pou xwrese einaI:%s
    ", myString);
    }

  • @16bitdude36
    @16bitdude36 2 роки тому

    #include
    #define SIZE 10
    int mygets(char *str,int n);
    int main()
    {
    char str[SIZE];
    if(mygets(str,SIZE)==-1)
    {
    printf("String Not Fully Red
    ");
    fflush(stdin);
    }
    printf("%s",str);
    return 0;
    }
    int mygets(char *str,int n)
    {
    int i,c=0;
    for(i=0; i

    • @psounis
      @psounis  2 роки тому

      Ναι γενικά κάνουμε κάποιες ασκήσεις που προσομοιώνουμε συναρτήσεις βιβλιοθήκης, αλλά προτιμούμε αυτές που είναι στην βιβλιοθήκη, γιατί ίσως να μην έχουμε κάτι προβλέψει κ.λπ.
      Ωστόσο ιδίως για το εκπαιδευτικό στάδιο, είναι εξαιρετικά ωφέλιμο αυτό που κάνεις.