Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [C] Somma

  1. #1

    [C] somma

    Ciao a tutti..chi mi da una mano?
    Vi posto il codice di questo semplice server che dovrebbe fare da calcolatrice, per ora ho provato solo con la somma..ma non fa il totale..cosa sbaglio? probabilmetne nella dichiarazione di int tot, ma non riesco a capire come fare visto che io gli invio dal client una stringa e non un numero alla volta..
    Grazie mille!

    codice:
    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <string.h>
    #include <stdlib.h>
    
    #define PORT 10000
    #define MAXCONN 5
    #define DIMBUFF 10
    
    void addr_initialize();
    
    void addr_initialize(struct sockaddr_in *indirizzo, int port, long IPaddr)
    {
       indirizzo->sin_family = AF_INET;
       indirizzo->sin_port = htons((u_short) port);
                /* htons: host to network conversion, short */
       indirizzo->sin_addr.s_addr = IPaddr;
    }
    
    int main(int argc, char * argv[])
    {
       int  sd,new_sd;
       struct sockaddr_in server_addr;
       struct sockaddr_in client_addr;
       int client_len=sizeof(client_addr);
       char inbuf [DIMBUFF];
       char *carattere,*numero;
       int posizione;
       int *n1,*n2;
       int tot;
       char *stringa_send;
       stringa_send=calloc(20,sizeof(char));
       char terminatore[2]={'\0','\n'};
    
       addr_initialize(&server_addr, PORT, INADDR_ANY);
       sd=socket(AF_INET,SOCK_STREAM,0);
       bind(sd,(struct sockaddr*) &server_addr,sizeof(server_addr));
       listen(sd,MAXCONN);
       while (1)
          {
          printf("\nMi pongo in attesa di richieste di connessione\n");
          new_sd=accept(sd,(struct sockaddr*) &client_addr, &client_len);
          printf("Ho accettato una connessione ");
          printf("dal client con port: %d\n", ntohs(client_addr.sin_port));
          do
             {
             recv(new_sd,&inbuf,DIMBUFF,0);
             printf("\nHo ricevuto i seguenti parametri %s\n", inbuf);
    	
    	 n1=calloc(20,sizeof(int));
       	 n2=calloc(20,sizeof(int));
       	carattere=strchr(inbuf,'+');
       	posizione=carattere-inbuf;
       	strncpy(n1,inbuf,posizione);
       	numero=strpbrk(carattere,"1234567890");
       	strcpy(n2,numero);
       	printf("%s\n%s\n",n1,n2);
    
    	 tot=n1+n2;     
    	    printf ("il totale dell'operazione e' %d", tot);
    		printf ("invio il totale al client \n");
    		sprintf (stringa_send, "%d\0\n", tot); 
    	send (new_sd, stringa_send, 3, 0);
    	send(new_sd,terminatore,2,0);}
    	    
    	 while (inbuf!='q');
          close(new_sd);
          printf("\nChiudo la connessione\n");
       }
       
       close(sd);
    }

  2. #2
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782
    codice:
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    main()
    {
    char *p, *inbuf="187+84";
    int n1,n2;
    
     p=strchr(inbuf,'+');
     p++;
     n1=atoi(inbuf);
     n2=atoi(p);
     printf("%d\n",n1+n2);
    
    }
    Leggi il REGOLAMENTO!

    E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
    Drugo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.