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
codice:
#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_din.c
codice:
#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;
}
}
a_sta.c
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';
}
Output 1:
Schermata del 2014-02-13 14:10:19.jpg
Output 2:
Schermata del 2014-02-13 13:48:09.jpg
Grazie.