Warning “assignment makes integer from pointer without a cas

di il
3 risposte

Warning “assignment makes integer from pointer without a cas

Ciao a tutti,
ho appena cominciato a studiare il C e da pochi giorni ho incontrato i puntatori. Ho cercato di scrivere una piccola calcolatrice ma mi restituisce un warning oltre a non funzionare ovviamente -.- solo che non capisco dove sia il problema....

#include <stdio.h>
#include <ctype.h>
#define MAX 1000
void clean(char *r, int *i);
int issign(char s);
void main(){

	int i=0, lenght=0, num[MAX];
	float result;
	char c, r[MAX], s;
	while( (c=getchar())!= '\n'){
	if(isdigit(c) == 1){
		r[lenght++] = c;
		}
	else if (c==' '){}
	else 
		{num[i++] = atoi(r);
		clean(&r[0], &lenght);
		if(issign(c)){
			s=c;}
		}}

	switch(s){
		case '+':
		result= num[0] + num[2];
		break;
		case '-':
		result= num[0] - num[2];
		break;
		case '/':
		result= num[0] / num[2];
		break;
		case '*':
		result= num[0] * num[2];
		break;
		}
	printf("The result is %f", result);
}

void clean(char *r, int *i){
	for ( ; *i > 0; *i--, r++){
		*r = NULL;
	}}

int issign(char s){
	if(s == '+' || s == '-' || s == '/' || s == '*')
	return 1;
	else
	return 0;}
		
Grazie a tutti =)

3 Risposte

  • Re: Warning “assignment makes integer from pointer without a cas

    
    #include <stdio.h>
    #include <stdlib.h> //$$MAX
    #include <ctype.h>
    #define MAX 1000
    void clean(char *r, int *i);
    int issign(char s);
    int main(){
    
       int i=0, lenght=0, num[MAX];
       float result;
       char c, r[MAX], s;
       while( (c=getchar())!= '\n'){
       if(isdigit(c)){ //$$MAX
          r[lenght++] = c;
          }
       else if (c==' '){}
       else 
          {num[i++] = atoi(r);
          clean(&r[0], &lenght);
          if(issign(c)){
             s=c;}
          }}
    
       switch(s){
          case '+':
          result= num[0] + num[2];
          break;
          case '-':
          result= num[0] - num[2];
          break;
          case '/':
          result= num[0] / num[2];
          break;
          case '*':
          result= num[0] * num[2];
          break;
          }
       printf("The result is %f", result);
       
       return 0;
    }
    
    void clean(char *r, int *i){
       for ( ; *i > 0; (*i)--, r++){//$$MAX
          *r = '\0';//NULL;//$$MAX
       }}
    
    int issign(char s){
       if(s == '+' || s == '-' || s == '/' || s == '*')
       return 1;
       else
       return 0;}    
    
  • Re: Warning “assignment makes integer from pointer without a cas

    Non mi da più lo warning ora devo solo farlo funzionare xP. Grazie mille =)
  • Re: Warning “assignment makes integer from pointer without a cas

    Nel senso non dà i risultati ma sto uscendo ...
Devi accedere o registrarti per scrivere nel forum
3 risposte