RISOLTO [C] Non mi esegue lo scanf dentro il do while

Stato
Discussione chiusa ad ulteriori risposte.

Matteo34

Nuovo Utente
104
3
CPU
i5-10500 3.2Ghz
Dissipatore
Non specificato
Scheda Madre
Non specificata
HDD
M.2 251GB e M.2 500GB
RAM
16GB DDR4 2666mhz
GPU
Grafica Intel® UHD 630
Audio
Non specificata
Monitor
1920x1080 27"
PSU
Non specificato
Case
Non specificato
Periferiche
Nono specificato
Net
Eolo
OS
Ubuntu
Ho un problema in un programma in C;
Metto qua sotto una piccola parte del codice; i printf sono abbreviato;
Codice:
#include<studio.h>
int main()
{
   int scelta;
   printf();
   printf();

   do
   {
        scanf("%d", scelta);
   }
   while(scelta != 1);
 
  return 0;

}

Il problema e che non mi esegue lo scanf dentro il do while, si ferma all'ultimo printf non so perché;
Perfavore aiutatemi
 
Ultima modifica da un moderatore:

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
scanf("%d", &scelta);
 

Matteo34

Nuovo Utente
104
3
CPU
i5-10500 3.2Ghz
Dissipatore
Non specificato
Scheda Madre
Non specificata
HDD
M.2 251GB e M.2 500GB
RAM
16GB DDR4 2666mhz
GPU
Grafica Intel® UHD 630
Audio
Non specificata
Monitor
1920x1080 27"
PSU
Non specificato
Case
Non specificato
Periferiche
Nono specificato
Net
Eolo
OS
Ubuntu

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,220
1,852
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Quel printf senza parametri non mi piace molto... Può essere un undefined behavior magari.
Posto che non ha senso usare un printf per non stampare nulla.

Codice:
printf("\n");

Sostituiscili con questa forma ad esempio.
 
  • Mi piace
Reazioni: Mursey

GraveKeeper

Utente Èlite
7,017
3,184
CPU
AMD Ryzen 7 3700X
Dissipatore
Enermax LiqMax III ARGB 240 Nero ARGB
Scheda Madre
Asus Tuf Gaming B550-PLUS (WIFI)
HDD
Samsung 970 EVO Plus 500GB NVMe + Crucial MX500 1TB + 2 x WD10EZEX Blue 1TB
RAM
Adata XPG Spectrix 16gb (2x8) 3200Mhz RGB
GPU
Asus NVIDIA GeForce GTX 750ti OC 2GB (in attesa di meglio)
Audio
Behringer U-PHORIA UM2 (chissà, magari un giorno prenderò una Scarlett Solo)
Monitor
LG 27GN800 UltraGear QHD IPS 27" 1ms 144Hz
PSU
ITEK GF 750W 80Gold
Case
NZXT H510i Nero
Periferiche
Studio Monitor Speakers Presonus Eris E3.5, Audio Technica ATH-M30x
OS
Windows 10 Home 64-bit
Ho un problema in un programma in C;
Metto qua sotto una piccola parte del codice; i printf sono abbreviato;
Codice:
#include<studio.h>
int main()
{
   int scelta;
   printf();
   printf();

   do
   {
        scanf("%d", scelta);
   }
   while(scelta != 1);

  return 0;

}

Il problema e che non mi esegue lo scanf dentro il do while, si ferma all'ultimo printf non so perché;
Perfavore aiutatemi

Ci sono un bel po' di imprecisioni. Printf vuoti e scanf senza l'& come ti hanno già detto, dovresti inizializzare la variabile scelta dandogli un valore, di solito 0. E anche inizializzandola il ciclo sarebbe infinito, dato che scelta non diventa mai 1.
 

Matteo34

Nuovo Utente
104
3
CPU
i5-10500 3.2Ghz
Dissipatore
Non specificato
Scheda Madre
Non specificata
HDD
M.2 251GB e M.2 500GB
RAM
16GB DDR4 2666mhz
GPU
Grafica Intel® UHD 630
Audio
Non specificata
Monitor
1920x1080 27"
PSU
Non specificato
Case
Non specificato
Periferiche
Nono specificato
Net
Eolo
OS
Ubuntu
Allora in printf vuoti li ho messi solo nel post osì da renderlo più corto; Per quanto riguardo il do while infinito non lo è perchè la persona inserisce un numero nella variabile scelta e se il numero è diverso da uno lo deve rinserire; Inoltre per gli & che non ho messo nel codice li ho messi na sul post mi sono sfugiti;
Vi metto qui sotto il codice intero:
Codice:
#include<stdio.h>
int main()
{
    int scelta;

    printf("Questa è una calcolatrice:");
    printf("\nSeleziona 1 per: ADDIZIONE");
    printf("\nSeleziona 2 per: SOTTRAZIONE");
    printf("\nSeleziona 3 per: MOLTIPLICAZIONE");
    printf("\nSeleziona 4 per: DIVISIONE");

    scanf("\nSeleziona modalità:%d", &scelta);

    switch(scelta)
    {
    case 1:
        printf("Hai scelto ADDIZIONE");
        break;

    case 2:
        printf("Hai scelto SOTTRAZIONE");
        break;

    case 3:
        printf("Hai scelto MOLTIPLICAZIONE");
        break;

    case 4:
        printf("Hai scelto DIVISIONE");
        break;

    default:
        printf("%d non è un opzione", scelta);
        break;
    }

    return 0;
}

non mi esegue lo scanf si scelta;
aiuto!!!!
 

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
Togli il testo da dentro la scanf
 
  • Mi piace
Reazioni: BAT

Matteo34

Nuovo Utente
104
3
CPU
i5-10500 3.2Ghz
Dissipatore
Non specificato
Scheda Madre
Non specificata
HDD
M.2 251GB e M.2 500GB
RAM
16GB DDR4 2666mhz
GPU
Grafica Intel® UHD 630
Audio
Non specificata
Monitor
1920x1080 27"
PSU
Non specificato
Case
Non specificato
Periferiche
Nono specificato
Net
Eolo
OS
Ubuntu

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,220
1,852
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
In teoria il testo non dovrebbe dare errore, comunque l'ho tolto e non me lo esegue ugualmente;
Non so più che fare!!

Il testo invece non è corretto. Il parametro è uno specificatore di formato, come ad esempio %d, non una stringa qualsiasi.
Se levi quello funziona. Puoi anche provarlo online: https://repl.it/languages/c
 
  • Mi piace
Reazioni: GraveKeeper

GraveKeeper

Utente Èlite
7,017
3,184
CPU
AMD Ryzen 7 3700X
Dissipatore
Enermax LiqMax III ARGB 240 Nero ARGB
Scheda Madre
Asus Tuf Gaming B550-PLUS (WIFI)
HDD
Samsung 970 EVO Plus 500GB NVMe + Crucial MX500 1TB + 2 x WD10EZEX Blue 1TB
RAM
Adata XPG Spectrix 16gb (2x8) 3200Mhz RGB
GPU
Asus NVIDIA GeForce GTX 750ti OC 2GB (in attesa di meglio)
Audio
Behringer U-PHORIA UM2 (chissà, magari un giorno prenderò una Scarlett Solo)
Monitor
LG 27GN800 UltraGear QHD IPS 27" 1ms 144Hz
PSU
ITEK GF 750W 80Gold
Case
NZXT H510i Nero
Periferiche
Studio Monitor Speakers Presonus Eris E3.5, Audio Technica ATH-M30x
OS
Windows 10 Home 64-bit
Infatti, nello scanf non si deve inserire testo perchè è solo la funzione per acquisire un valore da tastiera.

Per stampare a schermo bisogna usare il printf. Che poi nel printf tu possa stampare il valore di una variabile usando uno specificatore di formato, quello è un altro conto, ma non vale per lo scanf.
 

Matteo34

Nuovo Utente
104
3
CPU
i5-10500 3.2Ghz
Dissipatore
Non specificato
Scheda Madre
Non specificata
HDD
M.2 251GB e M.2 500GB
RAM
16GB DDR4 2666mhz
GPU
Grafica Intel® UHD 630
Audio
Non specificata
Monitor
1920x1080 27"
PSU
Non specificato
Case
Non specificato
Periferiche
Nono specificato
Net
Eolo
OS
Ubuntu
Infatti, nello scanf non si deve inserire testo perchè è solo la funzione per acquisire un valore da tastiera.

Per stampare a schermo bisogna usare il printf. Che poi nel printf tu possa stampare il valore di una variabile usando uno specificatore di formato, quello è un altro conto, ma non vale per lo scanf.
In tutti i programmi mettevo il testo nello scanf ma non mi dava errore, solo in questo programma fa questo problema;
Inoltre ho provato togliendo il testo ma non va ugualmente
 

clessidra

Utente Attivo
766
272
CPU
VIA C3
GPU
Ati Rage
OS
linux - Red Hat 1.1
Ho un problema in un programma in C;
Metto qua sotto una piccola parte del codice; i printf sono abbreviato;
Codice:
#include<studio.h>
int main()
{
   int scelta;
   printf();
   printf();

   do
   {
        scanf("%d", scelta);
   }
   while(scelta != 1);

  return 0;

}

Il problema e che non mi esegue lo scanf dentro il do while, si ferma all'ultimo printf non so perché;
Perfavore aiutatemi
Dopo aver completato i due printf, corretto scanf e compilato il codice, il programma viene eseguito normalmente.

Non sono un programmatore.
Post unito automaticamente:

Allora in printf vuoti li ho messi solo nel post osì da renderlo più corto; Per quanto riguardo il do while infinito non lo è perchè la persona inserisce un numero nella variabile scelta e se il numero è diverso da uno lo deve rinserire; Inoltre per gli & che non ho messo nel codice li ho messi na sul post mi sono sfugiti;
Vi metto qui sotto il codice intero:
Codice:
#include<stdio.h>
int main()
{
    int scelta;

    printf("Questa è una calcolatrice:");
    printf("\nSeleziona 1 per: ADDIZIONE");
    printf("\nSeleziona 2 per: SOTTRAZIONE");
    printf("\nSeleziona 3 per: MOLTIPLICAZIONE");
    printf("\nSeleziona 4 per: DIVISIONE");

    scanf("\nSeleziona modalità:%d", &scelta);

    switch(scelta)
    {
    case 1:
        printf("Hai scelto ADDIZIONE");
        break;

    case 2:
        printf("Hai scelto SOTTRAZIONE");
        break;

    case 3:
        printf("Hai scelto MOLTIPLICAZIONE");
        break;

    case 4:
        printf("Hai scelto DIVISIONE");
        break;

    default:
        printf("%d non è un opzione", scelta);
        break;
    }

    return 0;
}

non mi esegue lo scanf si scelta;
aiuto!!!!
Compilato e funzionante.

Non sono un programmatore.
 

Matteo34

Nuovo Utente
104
3
CPU
i5-10500 3.2Ghz
Dissipatore
Non specificato
Scheda Madre
Non specificata
HDD
M.2 251GB e M.2 500GB
RAM
16GB DDR4 2666mhz
GPU
Grafica Intel® UHD 630
Audio
Non specificata
Monitor
1920x1080 27"
PSU
Non specificato
Case
Non specificato
Periferiche
Nono specificato
Net
Eolo
OS
Ubuntu
Allora il problema è il compilatore di code blocks
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,220
1,852
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Che compilatore stai utilizzando?
Mostra uno screenshot dopo aver eseguito il programma, così vediamo anche noi.

Io ho provato con GCC sotto Linux e anche compilando onine, e funziona.
 
  • Mi piace
Reazioni: Mursey

GraveKeeper

Utente Èlite
7,017
3,184
CPU
AMD Ryzen 7 3700X
Dissipatore
Enermax LiqMax III ARGB 240 Nero ARGB
Scheda Madre
Asus Tuf Gaming B550-PLUS (WIFI)
HDD
Samsung 970 EVO Plus 500GB NVMe + Crucial MX500 1TB + 2 x WD10EZEX Blue 1TB
RAM
Adata XPG Spectrix 16gb (2x8) 3200Mhz RGB
GPU
Asus NVIDIA GeForce GTX 750ti OC 2GB (in attesa di meglio)
Audio
Behringer U-PHORIA UM2 (chissà, magari un giorno prenderò una Scarlett Solo)
Monitor
LG 27GN800 UltraGear QHD IPS 27" 1ms 144Hz
PSU
ITEK GF 750W 80Gold
Case
NZXT H510i Nero
Periferiche
Studio Monitor Speakers Presonus Eris E3.5, Audio Technica ATH-M30x
OS
Windows 10 Home 64-bit
Considera che una volta tolto il testo non appare nulla se non l'inserimento, quindi magari non te ne sei accorto
 
Stato
Discussione chiusa ad ulteriori risposte.

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

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili