Δημοσιεύτηκε: 16 Φεβ 2012, 10:50
Star_Light έγραψε:Απλα δεν μπορω να καταλάβω γιατι μου είπες αυτο με τα στατικά strings.... άλλωστε μεσω της define ιδιο μήκος τα ορισα εξαρχής.
Σου είπα πως είναι αδύνατον να εναλλάξεις 2 στατικά strings διαφορετικού μέγιστου μήκους.
Ναι, γιατί δεν το έσβησες μετά την fgets().
Το παρακάτω δίνει σωστό αποτέλεσμα;
- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 15
#define pressENTER() \
do{ \
char mYcHAr; \
printf( "press ENTER..." ); \
while ( (mYcHAr=getchar()) != '\n' && mYcHAr != EOF ) \
; \
}while(0)
void foo( char s[SIZE] )
{
printf( "Η συμβολοσειρά που δόθηκε ειναι η: %s\n" , s );
printf( "Το μέγεθος του τρέχοντος μήκους του string που δώσατε ήταν: %lu \n",
strlen(s) + 1
);
printf( "Το μέγιστο μήκος της συμβολοσειράς θα πρέπει να είναι: %lu \n",
sizeof(s)
);
return;
}
int main( void )
{
char s[SIZE]={'\0'};
printf("Give a string : ");
fgets(s , SIZE , stdin);
foo(s);
pressENTER();
exit( EXIT_SUCCESS );
}
Επίσης, μην μπλέκεις σαν όρους το μήκος (σε χαρακτήρες) με το μέγεθος (σε bytes).