Originariamente inviato da UltraBeginner
Ciao ragazzi,
molto brevemente:

printf("Inserisci il numero di caratteri da confrontare");
scanf("%d",&x);

gats(s1);
gets(s2);

printf("la stringa s1 %s s2\n",strncmp(s1,s2,x)>0 ? "e piu lunga di" : "non e piu lunga di");

qualcuno mi sa dare una ragione plausibile per cui, anke debuggando, la prima gets(s1) debba essere completamente ignorata, proprio saltata a pie pari?
Allora, giusto per iniziare, la scanf è una ciofeca spaventosa!!! Lasciala perdere.

Per come è gestita la scanf, essa si ferma al primo carattere non riconosciuto ma lo lascia nel buffer di input!!! Avendo messo %d, tu richiedi l'input di un valore numerico. Quando premi l'INVIO, la scanf lo riconosce come carattere non richiesto e si ferma lì ma il carattere \n rimane nel buffer!

gets() invece è una funzione insicura in quanto non gli puoi specificare una lunghezza massima da accettare in input!

Soluzione: utilizzare fgets (specificando come stream stdin) per effettuare l'input ed utilizzare sscanf per effettuare il parsing dei valori.