Salve a tutti,
come da titolo, mi ritrovo con un ciclo for che esegue il suo contenuto ogni 2 iterazioni.
La cosa strana è che accade la stessa cosa per due cicli for,in due funzioni diverse e che all'eseguire dell'una, non viene eseguita l'altra. Detto questo, si può pensare che il problema sia del main,ma non vedo niente di errato nel mio codice:
main.c
a_din.ccodice:#include <stdio.h> #include <stdlib.h> #include <string.h> char *a_din(short); void a_sta(short,char[]); void main() { short n,x; char s_sta[100], *s_din; puts("1.Allocazione dinamica;"); puts("2.Allocazione statica;"); puts("3.Chiudi."); while(x!=3) { fflush(stdin); printf("\nInserire scelta:\n"); scanf("%hd",&x); switch(x) { case 1: printf("\nInserire il size della stringa\n"); scanf("%hd",&n); puts("Allocazione dinamica:"); s_din=a_din(n); printf("\nLa stringa è:\t %s",s_din); break; case 2: printf("\nInserire il size della stringa\n"); scanf("%hd",&n); puts("Allocazione statica:"); a_sta(n,s_sta); printf("La stringa è: %s",s_sta); break; default: break; } } }
a_sta.ccodice:#include <stdio.h> #include <stdlib.h> #include <string.h> char *a_din(short n) { char *str; short i; str=(char*)malloc(n+1); if(str!=NULL) { for(i=0;i<n-1;i++) { fflush(stdin); printf("\nInserisci il %hd^ carattere:\t",i+1); str[i]=getchar(); } str[i]='\0'; return str; } }
Output 1:codice:#include <stdio.h> #include <stdlib.h> #include <string.h> void a_sta(short n,char str[]) { short i=0; char ch; for(i=0;i<n;i++) { fflush(stdin); printf("\nInserisci il %hd^ carattere:",i+1); str[i]=getchar(); } str[i]='\0'; }
Schermata del 2014-02-13 14:10:19.jpg
Output 2:
Schermata del 2014-02-13 13:48:09.jpg
Grazie.

Rispondi quotando