[C] Assignment makes integer from pointer

di Anonimizzato8245 il
6 risposte
Praticamente sto cercando di compilare un pezzo di codice solo che mi da risultati inaspettati colpa di questo warning: Assignment makes integer from pointer without cast


Qualcuno potrebbe darmi una mano a capire? Il codice è cortissimo è questo qui:

#include <stdio.h>
#include <string.h>
#define N 37
#define COL 12

typedef struct {

char colore[COL];
int numeror;


} numero_strut;


int main () {


int i; //indice array
 numero_strut array_num[N]; //un array del tipo numero_strut

for (i=0;i<N;i++){

array_num [i].numeror=i;

if  ((i==1) || (i==3) ||(i==5) ||(i==7) ||(i==9) ||(i==12) ||(i==14) ||(i==16)
    || (i==18) ||(i==19) ||(i==21) ||(i==23) ||(i==25) || (i==27) ||(i== 30) ||(i==32)
    ||(i==34)||(i==36)){


array_num[i].colore[COL] = "rosso";   // warning 1
printf("%s\n\n",array_num[i].colore[COL]);}

else

if (i!=0){


array_num[i].colore[COL]= "nero"; // warning 2

printf("%s\n\n",array_num[i].colore[COL]);}





}


return 0;


}

6 Risposte

  • Stai usando le stinghe, devi usare le funzioni che permettono di copiare una stringa in un altra
    
    strcpy(str1,str2);
    
  • 
    if  ((i==1) || (i==3) ||(i==5) ||(i==7) ||(i==9) ||(i==12) ||(i==14) ||(i==16)
        || (i==18) ||(i==19) ||(i==21) ||(i==23) ||(i==25) || (i==27) ||(i== 30) ||(i==32)
        ||(i==34)||(i==36))
    
    equivalente
    
    if( ( ((i%10) %2 == 1) && (i%2 == 0)) || ( ((i%10) %2 == 0) && (i%2 == 1) ) )
    
  • Grazie mille, ipotizziamo che quel codice non sia relativo al main (perchè in realtà fa parte di un programma più ampio) ma sia una funzione.

    Mi sono trovato nel problema di dover fare il return di un array del tipo struttura che ho definito.

    Come potrei fare per far restituire alla mia funzione l' array che ho riempito con la funzione di cui ho scritto il codice sopra?
  • Passa l'array per puntatore nella funzione che lo riempie e non far tornare nulla.
  • Si ma non ho proprio capito come si fa, qualcosa con i puntatori la so fare ma non ho mai giocato sulle array con i puntatori.

    Come potrei passare l' array per puntatore?
  • 
    void chiamafunc(int **arr)
    {
       printf("%d %d %d %d",*arr[0],*arr[1],*arr[2],*arr[3]);
    }
    
    
    int arr[] = {1,2,3,4};
    chiamafunc(&arr);
    
Devi accedere o registrarti per scrivere nel forum
6 risposte