problema void

Pubblicità

Master960

Utente Èlite
Messaggi
1,566
Reazioni
242
Punteggio
61
ciao a tutti,
la prof ha spiegato le funzioni e non ho capito come funziona il void quando si ha una stringa tra i dati.
Mi da due errori:
-mi dice arg 1 in function "" makes integer pointer without a cast
-mi dice arg 1 in fuction "" makes incompatible pointer.
cosa vuol dire ? @Tinwor
 
Ultima modifica:
Codice:
#include <stdio.h>#include <stdlib.h>


void ripeti(char *stringa, int *num);


int main(int argc, char *argv[])
{
  int num;
  char stringa[50];
  
  printf("Inserisci il numero");
  scanf("%d", &num);
  
  printf("Inserisci la stringa");
  scanf("%s", stringa);
  
  ripeti(&stringa, &num);
  
  
  
  system("PAUSE");	
  return 0;
}
void ripeti(char *stringa, int *num)
{ 
          int i;
          for(i = 0; i < *num; i++)
          {
                printf("%s", *stringa);
          }


}
 
l'errore non c'entra con la stringa in sè...ma con i puntatori..
La stringa è un vettore di caratteri, e i vettori vengono sempre passati alle funzioni per riferimento..per cui quando fai &stringa per passarlo alla funzione sbagli..
potresti fare anche così:
Codice:
[COLOR=#333333]

#include <stdio.h>#include <stdlib.h>[/COLOR]

void ripeti(char stringa[], int *num);


int main(int argc, char *argv[])
{
  int num;
  char stringa[50];
  
  printf("Inserisci il numero");
  scanf("%d", &num);
  
  printf("Inserisci la stringa");
  scanf("%s", stringa);
  
  ripeti(stringa, &num);
  
  
  
  system("PAUSE");    
  return 0;
}
void ripeti(char stringa[], int *num)
{ 
          int i;
          for(i = 0; i < *num; i++)
          {
                printf("%s", stringa);
          }


}
 
Quando chiami la funzione
Codice:
void ripeti(char *, int *);
Essa si aspetta un puntatore ad un char ed un un puntatore ad int. Essendo un array un puntatore al primo elemento dello stesso (vale lo stesso per le stringhe, ossia array di char terminati con \0), passare &stringa indicherebbe passare l'indirizzo del puntatore e non l'indirizzo puntato dal puntatore.

Non pensare a qualcosa che non sai ancora, perché è come con scanf:
Codice:
[COLOR=#000000]printf("Inserisci la stringa");
[/COLOR][COLOR=#000000]  scanf("%s", stringa);[/COLOR]

Il compilatore, che immagino sia VC++ (i suoi messaggi di errore non sono chiarissimi, è vero), cerca di fartelo notare dicendoti: "mi dice arg 1 in fuction "" makes incompatible pointer.".

NB: printf("%s", *stringa) è sbagliato perché vi è un'ulteriore incompatibilità tra i tipi. Stai indicando a printf che il primo parametro è una stringa, quando in realtà è un carattere ( *stringa == stringa[0]).
 
Ultima modifica:
Pubblicità
Pubblicità
Indietro
Top