Torna indietro   Hardware Upgrade Forum > Software > Programmazione

MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
Wireless 2.4 GHz, Bluetooth 5.4, cancellazione attiva del rumore, design pieghevole e un'autonomia che mette in imbarazzo prodotti che costano il doppio. Le Maestro 500 non eccellono in nulla, ma offrono tutto. E a questo prezzo è difficile chiedere di più
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
Dopo anni di attesa e una lunga fase di sviluppo, Noctua entra nel mercato dei dissipatori a liquido AIO con la nuova serie NL-LC1. Forte dell'esperienza maturata nel raffreddamento ad aria, l'azienda austriaca promette di portare la propria filosofia fatta di qualità costruttiva, attenzione ai dettagli e silenziosità anche in questo segmento. Abbiamo provato il nuovo sistema per scoprire se riesce a distinguersi in un mercato ormai molto competitivo.
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Arrivato sul mercato italiano a fine marzo, la serie Boox Go 10.3 (Gen II) offre Android 15, penna da 4096 livelli e retroilluminazione opzionale (nel modello da noi provato, Lumi, presente). La serie si compone di due tablet ePaper che fanno da e-reader, blocco note digitale e persino browser, tutto a un prezzo che fa dimenticare i prodotti di brand più blasonati
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-08-2005, 13:15   #1
viridovix1
Junior Member
 
Iscritto dal: Jul 2005
Messaggi: 15
[C]problema con struttuta di controllo if else

IL codice in C gira sotto Linux 9.2, compilatore gcc.
Si tratta sempre di un client e server connessi tra loro tramite socket, con protocollo tcp.

qui riporto la parte del server con la struttura if:

Codice:
char x[1024],y[1024];
  unsigned char z,w;
  char buf[1024];
  char buf2[1024];
  do
    {
      send(ds_sock_acc,"\nInserisci fila :",20,0);
      recv(ds_sock_acc,&x,2,0);
      printf("%s",&x);
      if ((strcmp(x,"A")!=0)||(strcmp(x,"B")!=0)||(strcmp(x,"C")!=0)) 
            {
                 send(ds_sock_acc,"\nfila inesistente\n",30,0);
             }
       else (strcpy(buf,"fatto"));
     }
    while (strcmp(buf,"fatto")!=0);
purtroppo nn so perchè questo nn funziona :
if ((strcmp(x,"A")!=0)||(strcmp(x,"B")!=0)||(strcmp(x,"C")!=0))

se inserisco dal client il carattere A o B o C comunque sia il sever spedisce il messaggio fila inesistente.

modificando cosi' riconosce invece ol carattere A:

if ((strcmp(x,"A")!=0)
{
send(ds_sock_acc,"\nfila inesistente\n",30,0);
}

ma ovviamente nn mi fa gli altri confronti
se modifico ulteriormente cosi

if ((strcmp(x,"A")!=0)
{
send(ds_sock_acc,"\nfila inesistente\n",30,0);
}

else if (strcmp(x,"B")!=0)
{
send(ds_sock_acc,"\nfila inesistente\n",30,0);
}

ritorno al problema iniziale qualsiasi carattrere invio da client poi il server spedisce il messaggio fila inesistente.

nn riesco a capire dove sia la magagna
viridovix1 è offline   Rispondi citando il messaggio o parte di esso
Old 11-08-2005, 13:17   #2
cagnulein
Bannato
 
L'Avatar di cagnulein
 
Iscritto dal: Oct 2002
Messaggi: 567
dico forse una stupidata, hai provato a mettere al posto di "A" -> 'A' e via discorrendo?

Fammi sapere
cagnulein è offline   Rispondi citando il messaggio o parte di esso
Old 11-08-2005, 14:08   #3
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Non ho capito bene quello che vuoi fare, ma ti ricordo che strcmp restituisce il valore 0 quando i suoi argomenti sono due stringhe uguali.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 11-08-2005, 14:08   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
(strcmp(x,"A")!=0)||(strcmp(x,"B")!=0)||(strcmp(x,"C")!=0)

Questa espressione è sempre vera... Se anche uno dei tre strcmp ritorna 0 (ricorda che strcmp ritorna 0 quando il primo parametro è uguale al secondo) gli altri due ritornano -1 o +1...quindi l'or ha sempre 1 come risultato...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 11-08-2005, 23:48   #5
kapo04
Member
 
L'Avatar di kapo04
 
Iscritto dal: Apr 2005
Città: Cagliari
Messaggi: 54
Se ho capito, quello che intendi fare è che quando inserisci A, B, oppure C il server mandi in output: "fatto"..
Quindi se questo è quello che vuoi fare, potresti modificare il codice cosi:

if ((strcmp(x,"A")==0)||(strcmp(x,"B")==0)||(strcmp(x,"C")==0))
{
strcpy(buf,"fatto");
}
else send(ds_sock_acc,"\nfila inesistente\n",30,0);

In questo modo se una delle tre strcmp() nella condizione dell'if è vera, allora l'operazione eseguita sarà la strcpy(), altrimenti l'else successivo.
Spero di esserti stato d'aiuto
__________________
Sapere di sapere quello che si sa e sapere di non sapere quello che non si sa: ecco il vero sapere... Confucio.
kapo04 è offline   Rispondi citando il messaggio o parte di esso
Old 12-08-2005, 01:55   #6
viridovix1
Junior Member
 
Iscritto dal: Jul 2005
Messaggi: 15
avete perfettamente ragione , sono stato un vero allocco

Ho corretto cosi:

if ((strcmp(x,"A")==0)||(strcmp(x,"B")==0)||(strcmp(x,"C")==0))
{ (strcpy(buf,"fatto"));
}
else send(ds_sock_acc,"\nfila inesistente\n",30,0);

ora va
Grazie
viridovix1 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con ...
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming Gigabyte MO32U24 OLED: il 4K a 240Hz su un panne...
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh Recensione realme 16 5G: lo smartphone con Selfi...
L'IA si diffonde tra gli adulti, ma la f...
Tim Cook avverte gli utenti Apple: gli a...
Pentagono: il modello Grok di xAI impieg...
Senua usato come biglietto da visita: le...
Elon Musk incassa da Tesla 115 miliardi ...
Disney+ rimuove il supporto a Dolby Visi...
Rivoluzione su Edge: l'account Microsoft...
Google archivia Nest Mini e Nest Audio: ...
Apple rinvia il prossimo Air: nel 2027 c...
Super sconti Smart TV LG: c'è l'OLED C5 ...
Sopresa: l'erede di Dacia Spring si chia...
OpenAI brucia 3,7 miliardi di dollari al...
Trump anticipa l'accordo: Intel produrr&...
L'infrastruttura come fondamento dell'IA...
HONOR Watch 6 debutta in Italia: design ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:25.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v