Δημοσιεύτηκε: 05 Αύγ 2011, 19:34
από migf1
:lol: φοβερή η εικόνα στο τέλος του ποστ :lol:

Βασικά ο gcc σε προειδοποιεί, επειδή η gets() είναι καταργημένη συνάρτηση, επειδή σε αφήνει να διαβάσεις μέσα στο string περισσότερους χαρακτήρες από όσους έχεις ορίσει να χωράει το string σου.

Για να μην παιδεύεσαι, κάνε copy πάνω από την main σου αυτήν εδώ τη συνάρτηση, που σε αναγκάζει να της περάσεις στα ορίσματά της και το μέγιστο μήκος που έχεις ορίσει για το string που τη βάζεις να διαβάζει, και χρησιμοποίησε αυτήν αντί για την gets().

Κώδικας: Επιλογή όλων

/* --------------------------------------------------------------------------------
* read from stdin up to len-1 chars in s or until ENTER is pressed null-terminate s,
* replacing '\n' if neccessary
*/
char *s_get(char *s, size_t len)
{
char *cp;
for (cp=s; (*cp=getc(stdin)) != '\n' && (cp-s) < len-1; cp++ )
; // for-loop with empty body
*cp = '\0'; // null-terminate

return s;
}

Ή μπορείς να μη ζητάς καθόλου τα strings από την κύρια είσοδο, βάλτα μόνος σου στην αρχή της main:

Κώδικας: Επιλογή όλων

int main( void )
{
char s1[] = "abcd", s2[] = "cdab";
...
return 0;
}

και άλλαζε τα πριν από κάθε compile που κάνεις για να τεστάρεις διάφορες περιπτώσεις.