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

Stato
Discussione chiusa ad ulteriori risposte.

Matteo34

Nuovo Utente
51
2
CPU
I5-2500 2.5Ghz
Dissipatore
Stock
Scheda Madre
Non specificata
HDD
Hdd 500gb
RAM
8gb DDR3
GPU
ATI Radeon HD 6770M
Audio
Non specificata
Monitor
1920x1080 24"
PSU
Non specificato
Case
I Mac metà 2011
Periferiche
Magic Mouse, Magic Keyboard
Net
Eolo
OS
MacOS High Sierra
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,518
425
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
51
2
CPU
I5-2500 2.5Ghz
Dissipatore
Stock
Scheda Madre
Non specificata
HDD
Hdd 500gb
RAM
8gb DDR3
GPU
ATI Radeon HD 6770M
Audio
Non specificata
Monitor
1920x1080 24"
PSU
Non specificato
Case
I Mac metà 2011
Periferiche
Magic Mouse, Magic Keyboard
Net
Eolo
OS
MacOS High Sierra

DispatchCode

Utente Attivo
893
556
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
HDD
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
GPU
Nvidia Geforce GTX 960M, 4GB
Audio
Realtek
Net
30Mbps/3Mbps con Eolo
OS
Windows 10 64bit
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.
 
  • Like
Reactions: Mursey

GraveKeeper

Utente Èlite
3,395
1,419
CPU
Intel Core i5 7200u (2 Core - 4 Threads)
Scheda Madre
HP 84A7
HDD
128gb Samsung M.2 + 1tb Hitachi 5400rpm
RAM
1x8gb 2400Mhz
GPU
NVIDIA GeForce MX110 2gb ddr3
Monitor
Schermo HD 1366x768
Case
HP Notebook 15-da0134nl
Periferiche
Studio Monitor Speakers Presonus Eris E3.5
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
51
2
CPU
I5-2500 2.5Ghz
Dissipatore
Stock
Scheda Madre
Non specificata
HDD
Hdd 500gb
RAM
8gb DDR3
GPU
ATI Radeon HD 6770M
Audio
Non specificata
Monitor
1920x1080 24"
PSU
Non specificato
Case
I Mac metà 2011
Periferiche
Magic Mouse, Magic Keyboard
Net
Eolo
OS
MacOS High Sierra
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,518
425
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
 
  • Like
Reactions: BAT

Matteo34

Nuovo Utente
51
2
CPU
I5-2500 2.5Ghz
Dissipatore
Stock
Scheda Madre
Non specificata
HDD
Hdd 500gb
RAM
8gb DDR3
GPU
ATI Radeon HD 6770M
Audio
Non specificata
Monitor
1920x1080 24"
PSU
Non specificato
Case
I Mac metà 2011
Periferiche
Magic Mouse, Magic Keyboard
Net
Eolo
OS
MacOS High Sierra

DispatchCode

Utente Attivo
893
556
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
HDD
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
GPU
Nvidia Geforce GTX 960M, 4GB
Audio
Realtek
Net
30Mbps/3Mbps con Eolo
OS
Windows 10 64bit
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
 
  • Like
Reactions: GraveKeeper

GraveKeeper

Utente Èlite
3,395
1,419
CPU
Intel Core i5 7200u (2 Core - 4 Threads)
Scheda Madre
HP 84A7
HDD
128gb Samsung M.2 + 1tb Hitachi 5400rpm
RAM
1x8gb 2400Mhz
GPU
NVIDIA GeForce MX110 2gb ddr3
Monitor
Schermo HD 1366x768
Case
HP Notebook 15-da0134nl
Periferiche
Studio Monitor Speakers Presonus Eris E3.5
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
51
2
CPU
I5-2500 2.5Ghz
Dissipatore
Stock
Scheda Madre
Non specificata
HDD
Hdd 500gb
RAM
8gb DDR3
GPU
ATI Radeon HD 6770M
Audio
Non specificata
Monitor
1920x1080 24"
PSU
Non specificato
Case
I Mac metà 2011
Periferiche
Magic Mouse, Magic Keyboard
Net
Eolo
OS
MacOS High Sierra
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
763
268
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
51
2
CPU
I5-2500 2.5Ghz
Dissipatore
Stock
Scheda Madre
Non specificata
HDD
Hdd 500gb
RAM
8gb DDR3
GPU
ATI Radeon HD 6770M
Audio
Non specificata
Monitor
1920x1080 24"
PSU
Non specificato
Case
I Mac metà 2011
Periferiche
Magic Mouse, Magic Keyboard
Net
Eolo
OS
MacOS High Sierra
Allora il problema è il compilatore di code blocks
 

DispatchCode

Utente Attivo
893
556
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
HDD
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
GPU
Nvidia Geforce GTX 960M, 4GB
Audio
Realtek
Net
30Mbps/3Mbps con Eolo
OS
Windows 10 64bit
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.
 
  • Like
Reactions: Mursey

GraveKeeper

Utente Èlite
3,395
1,419
CPU
Intel Core i5 7200u (2 Core - 4 Threads)
Scheda Madre
HP 84A7
HDD
128gb Samsung M.2 + 1tb Hitachi 5400rpm
RAM
1x8gb 2400Mhz
GPU
NVIDIA GeForce MX110 2gb ddr3
Monitor
Schermo HD 1366x768
Case
HP Notebook 15-da0134nl
Periferiche
Studio Monitor Speakers Presonus Eris E3.5
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.

Entra

oppure Accedi utilizzando

Hot: PS5 VS XBOX X/S?

  • Playstation 5

    Voti: 289 63.1%
  • XBOX Series X/S

    Voti: 169 36.9%

Discussioni Simili