DOMANDA Linguaggio C,Aiuto!!!

Davide9898

Nuovo Utente
17
0
C derivato:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLEN 255
#define V_DIM 1000

struct biblio{
   char titolo[MAXLEN];
};

void print(struct biblio a);

int main()
{
  struct biblio nuovo[V_DIM];
  int i, numero=0, x;
  char ricerca[V_DIM];
 
 while(1)
{
   printf("Inserisci una nuova rivelazione : ");
   scanf("%s",nuovo[numero].titolo); 

   if(strcmp(nuovo[numero].titolo,"fine")==0)
   break;
 
  numero++;
  if(numero==V_DIM)
  break;
}
  printf("\nRicerca un libro:  ");
  scanf("%s",ricerca);
 
  for(i=0;i<numero;i++)
{
  if(strcmp(nuovo[i].titolo,ricerca)==0)
 
  printf("\nLibro presente ");
  else
  printf("\nLibro assente "); 
}   

for(i=0;i<numero;i++)
{ 
   print(nuovo[i]);
}


return 0;
}

void print(struct biblio a)
{
  printf("\n%s\t ",a.titolo);

}

Salve a tutti,qualcuno mi può illuminare sul funzionamento di questa strcmp che in questo programma non funge,grazie!!!
 

MrLion

Nuovo Utente
50
4
CPU
AMD Vishera FX-8320
Dissipatore
Arctic Freezer 13 pro co
Scheda Madre
Asrock 990FX Extreme 3
HDD
Segate Barracuda 1TB
RAM
Corsair 1600 Mhz 8 GB
GPU
AMD r9 280x Vapor x Tri x
PSU
Corsair VS650 W
Case
Coller Master HAF 922
Periferiche
Tastiera Drevo Calibur Switch RED/ Mouse Logitech g203
OS
W10/Ubuntu
É moralmente sbagliato usare il break all'interno del ciclo for , sarebbe più opportuno che riguardassi il codice e trovassi un alternativa , perché mettendo quel brak andresti a contraddire la definizione stessa del ciclo for.
 

Andretti60

Utente Èlite
6,440
5,091
É moralmente sbagliato usare il break all'interno del ciclo for , sarebbe più opportuno che riguardassi il codice e trovassi un alternativa , perché mettendo quel brak andresti a contraddire la definizione stessa del ciclo for.
"Moralmente" sbagliato?! Dai... non facciamo gli italibani... :)
 

MrLion

Nuovo Utente
50
4
CPU
AMD Vishera FX-8320
Dissipatore
Arctic Freezer 13 pro co
Scheda Madre
Asrock 990FX Extreme 3
HDD
Segate Barracuda 1TB
RAM
Corsair 1600 Mhz 8 GB
GPU
AMD r9 280x Vapor x Tri x
PSU
Corsair VS650 W
Case
Coller Master HAF 922
Periferiche
Tastiera Drevo Calibur Switch RED/ Mouse Logitech g203
OS
W10/Ubuntu
Vedi che volutamente ho scritto così . Si vede che non hai inteso.
 

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit
É moralmente sbagliato usare il break all'interno del ciclo for , sarebbe più opportuno che riguardassi il codice e trovassi un alternativa , perché mettendo quel brak andresti a contraddire la definizione stessa del ciclo for.
Credo che a nessuno interessi nulla dell'uso morale del break in un ciclo for. Nel tuo caso è la soluzione più comoda, leggibile e efficace per uscire dal ciclo.
 

Giacomo Furlan

Utente Attivo
351
87
CPU
AMD Ryzen 5900x
Dissipatore
BeQuiet! SilentLoop 2 360mm
Scheda Madre
Gigabyte X470 AORUS Gaming 7 WIFI AMD X470
HDD
Crucial P5 Plus 2 TB PCIe M.2 2280SS
RAM
Patriot Viper Steel RAM DDR4 3600 Mhz 64GB (2x32GB) C18
GPU
MSI GeForce RTX 2080 Gaming X Trio
Audio
SteelSeries Arctis 9
Monitor
Alienware AW3423DWF
PSU
EVGA SuperNOVA 650 G3, 80 Plus GOLD 650W
Case
Sharkoon TG5
OS
Windows 11, Fedora 36
Ahahahah non ho mai sentito parlare di "moralità" di un codice. E non credo proprio sia poco elegante, poiché non compromette la lettura del codice.
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,946
11,581
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
...tuttavia while(1) è bruttino da vedere ed obbliga implicitamente ad usare un'uscita forzata dal ciclo;
che si possa fare tutto non significa che non si debba farlo bene, il ciclo potrebbe essere meglio programmato IMHO
 

Giacomo Furlan

Utente Attivo
351
87
CPU
AMD Ryzen 5900x
Dissipatore
BeQuiet! SilentLoop 2 360mm
Scheda Madre
Gigabyte X470 AORUS Gaming 7 WIFI AMD X470
HDD
Crucial P5 Plus 2 TB PCIe M.2 2280SS
RAM
Patriot Viper Steel RAM DDR4 3600 Mhz 64GB (2x32GB) C18
GPU
MSI GeForce RTX 2080 Gaming X Trio
Audio
SteelSeries Arctis 9
Monitor
Alienware AW3423DWF
PSU
EVGA SuperNOVA 650 G3, 80 Plus GOLD 650W
Case
Sharkoon TG5
OS
Windows 11, Fedora 36
Sì il ciclo while(1) è tanto brutto da vedere... in questi casi sceglierei un do {...} while piuttosto.

P.S.
:fumato:
Bash:
set -e; while [ true ]; do ./comando_che_può_non_uscire_in_code_0.sh; done
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili