Social Buttons

Διάβασμα Αλφαριθμητικών ( Με Ασφάλεια )

Η συνάρτηση scanf  και  η gets δεν ελέγχουν αν το κείμενο που δίνει ο χρήστης ξεπερνάει την δεσμευμένη μνήμη .

Για αυτό το λόγο θα πρέπει να χρησιμοποιήσουμε μια συνάρτηση όπου θα μας παρέχει περισσότερη ασφάλεια .

Αντί για την συνάρτηση gets θα χρησιμοποιήσουμε την συνάρτηση fgets .

Συντάσσεται ως εξής :

fgets (onoma_alphar, sizeof(onoma_alphar), biblio8iki)

Η βιβλιοθήκη στην οποία ανήκει η συνάρτηση είναι :
#include<stdio.h>

Άρα εμείς όταν θα θέλουμε να την χρησιμοποιήσουμε θα γράφουμε :

fgets (pinakas_alf, sizeof(pinakas_alf), stdin);

Αλλιώς θα πρέπει να χρησιμοποιήσουμε στην συνάρτηση  scanf θα πρέπει να χρησιμοποιήσουμε το προσδιοριστικό  %ns όπου n είναι το μέγιστο πλήθος του αλφαριθμητικού.

Παράδειγμα :


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#include<stdio.h>
#include<string.h>
int main(void)
{
 char pinakas_alf[100];
 printf("Dose keimeno : \n");
 fgets(pinakas_alf,sizeof(pinakas_alf),stdin);
 printf("Pliktrologisate : %s \n",pinakas_alf);
 return 0;
}


Εμφάνιση :



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

Παράδειγμα :


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#include<stdio.h>
#include<string.h>
int main(void)
{
 char pinakas_alf[10];
 printf("Dose keimeno : \n");
 fgets(pinakas_alf,sizeof(pinakas_alf),stdin);
 printf("Pliktrologisate : %s \n",pinakas_alf);
 return 0;
}



Εμφάνιση :























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

char  pinakas_alf [ 5000 ] ;

Παρόλο που κάνουμε παρακράτηση μνήμης.

Είναι η τελευταία λύση που μπορούμε να σκεφτούμε καθώς η μνήμη είναι πολύτιμη και δεν θέλουμε να κάνουμε παρακράτηση μνήμης.
Copyright © 2015 Sofronas Konstantinos - Sotirios. All Rights Reserved. Designed By Sofronas