[C] Assignment makes integer from pointer

di il
6 risposte

[C] Assignment makes integer from pointer

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

  • Re: [C] Assignment makes integer from pointer

    Stai usando le stinghe, devi usare le funzioni che permettono di copiare una stringa in un altra
    
    strcpy(str1,str2);
    
  • Re: [C] Assignment makes integer from pointer

    
    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) ) )
    
  • Re: [C] Assignment makes integer from pointer

    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?
  • Re: [C] Assignment makes integer from pointer

    Passa l'array per puntatore nella funzione che lo riempie e non far tornare nulla.
  • Re: [C] Assignment makes integer from pointer

    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?
  • Re: [C] Assignment makes integer from pointer

    
    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