Aiuto coi puntatori

di il
2 risposte

Aiuto coi puntatori

Premetto che sto recuperando la parte di C che mi manca dal programma di 4a informatica con le dispense del professore e facendo gli esercizi da lui proposti, quindi anche se vi possono sembrare stupidi o inutili hanno valore puramente didattico.

Questo non capisco perchè da quell'errore che vi ho segnato nella somma in fondo
#include <stdio.h>
#include <stdlib.h>
#include<string.h>

/*Dichiarare due variabili intere, e puntare ad esse tramite due puntatori generi-
ci. Acquisire valori per le due variabili, quindi calcolarne la somma, tramite
accessi indiretti alle variabili, e opportune forzature dei puntatori.*/

int main(int argc, char *argv[])
{int a,b;
void*Pa=&a;
void*Pb=&b;

printf("Inserisci valore a (intero)\n");
scanf("%d",(int*)Pa);
fflush(stdin);
printf("Inserisci valore b (intero)\n");
scanf("%d",(int*)Pb);
fflush(stdin);

(int*)Pa=(int*)Pa+(int*)Pb; //invalid operands to binary +
pintf("%d",(int*)Pa);
  
  system("PAUSE");	
  return 0;
}

Questo vi conviene lanciarlo per capire come reagisce per come l'ho fatto. Vorrei capire come si fa in questo caso ad accedere ad un singolo campo della stringa.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/*Dichiarare una STRINGA COSTANTE SENZA NOME, quindi effettuare su di essa le se-
guenti operazioni:
- valutare il numero di byte occupati in memoria da tale stringa;
- valutare il numero di caratteri significativi;
- visualizzarla carattere per carattere;
- visualizzarla con un solo accesso (utilizzando una sola istruzione printf);
- contare il numero di spazi contenuti in essa.*/

int main(int argc, char *argv[])
{char*P="pippo\0";
char*P2=P;
int lung,dim=0;
system("CLS");
lung=1;

while(P2!="\0")
{P2++;
lung++;
};

dim=sizeof(char)*lung;
printf("La stringa e' lunga %d byte\n",dim);
printf("La stringa ha %d caratteri significativi\n",dim-1);

P2=P;
while(P2!="\0")
{printf("%s ",P2);
P2++;
};

printf("\n%s\n",P);

P2=P; int Nspazi=0;
while(P2!="\0")
{if(P2==" "){Nspazi++;};
P2++;
};

printf("%d\n",Nspazi);




  
  system("PAUSE");	
  return 0;
}
Grazie a tutti
n.b: le consegne sono nei commenti ad inizio codice

2 Risposte

  • Re: Aiuto coi puntatori

    Nel primo esercizio la linea della somma e la successiva devono essere
    
    *(int*)Pa=(*(int *)Pa)+(*(int *)Pb);
    printf("%d", *(int*)Pa);
    
    Per il secondo, a parte che non è necessario il \0 alla fine della stringa costante dato che viene aggiunto da solo
    
    char*P="pippo";
    
    per accedere ai singoli caratteri dovrai scrivere
    
    while( (*P2) != '\0' )
    
    P.S. Nel forum si presenta un solo problema per thread non due ...
  • Re: Aiuto coi puntatori

    Grazie mille.
    Il primo è sistemato, il secondo non va.
    while( (*P2) != '\0' )
    viene compilato ma in esecuzione da errore "[waring] comparison between pointer and integer"
    P.S. Nel forum si presenta un solo problema per thread non due ...
    Lo terrò a mente
Devi accedere o registrarti per scrivere nel forum
2 risposte