Problema strano C (Puntatori)

di il
1 risposte

Problema strano C (Puntatori)

Ciao community, volevo porvi una domanda a cui non riesco a dare una risposta, in questo codice l'indice del ciclo viene incrementato due volte il che mi risulta strano perchè ogni volta che il programma riesegue le istruzioni nel ciclo l'indice viene incrementato una sola volta. Ci capite qualcosa voi???

#include <iostream>
#include <stdio.h>

int main()
{
int *I,*num_caratteri;
char *Punt1[6];
num_caratteri=(int*)malloc(sizeof(int));
I=(int*)malloc(sizeof(int));
*num_caratteri=6;
*I=0;
do
{
scanf("%c",&Punt1[*I]);
(*I)++;
printf("%d",*I);
}
while(*I<=*num_caratteri);
system("PAUSE");
return 0;
}

1 Risposte

  • Re: Problema strano C (Puntatori)

    Cos'è questo?
    
    char *Punt1[6];
    
    Un array di 6 puntatori a char?

    codice corretto
    
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
    	int *I,*num_caratteri;
    	char Punt1[6] = {0};
    	num_caratteri=(int*)malloc(sizeof(int));
    	I=(int*)malloc(sizeof(int));
    	*num_caratteri=6;
    	*I=0;
    do
    {
    	scanf("%c", &Punt1[*I]);
    	getchar();
    	(*I)++;
    	printf("%d\n",(*I));
    }
    while(*I < *num_caratteri);
    
    system("PAUSE");
    
    return 0;
    }
    
    siccome stai prendendo un carattere, nel buffer è rimasto anche il \n che viene di nuovo preso dal successivo scanf.ciò ti fa incrementare il tuo *I.
Devi accedere o registrarti per scrivere nel forum
1 risposte