Allora, giusto per iniziare, la scanf è una ciofeca spaventosa!!! Lasciala perdere.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?
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.