[c] bug in gcc con 3 scanf

C & C++ , problemi, richieste e progetti.

[c] bug in gcc con 3 scanf

Postby francy12 on 21 Jul 2008 00:33

salve a tutti! :D
è da un po che non masticavo il C e da un po' mi ci sono ridedicato! 8)
sono partito dal semplice... molto semplice ma mi sono bloccato...
sono su ubuntu e uso gcc. sto provando a creare diversi programmi sull'impronta di questo ma genero errori o eventi non desiderati:
Code: Select all
#include <stdio.h>
main()
{
int buf[2];
char n;
printf("\ninserisici il primo valore:");
scanf("%d",&buf[0]);
printf("\ninserisici il secondo valore:");
scanf("%d",&buf[1]);
printf("\n\nprimo valore:%d\tsecondo valore:%d",buf[0],buf[1]);
printf("\ncontinuare? [s/n]:");
n=getchar();
printf("\n\nprimo valore:%d\tsecondo valore:%d\t\trisp:%c",buf[0],buf[1],n);
}

il problema da me riscontrato in questo caso consiste nel fatto che, usando 2 scanf per due int e 1 scanf(o un getchar) per un char, mi permette di inserire solo gli interi. Wall
T_T o sono schiappa io o il compilatore ha qualche serio bug :lol:
Grazie in anticipo!!!
francy12
Newbies
 
Posts: 6
Joined: 20 Jul 2008 23:59

[c] bug in gcc con 3 scanf

Sponsor

Google Adsense

Re: [c] bug in gcc con 3 scanf

Postby k8 on 21 Jul 2008 01:39

Inanzitutto benvenuto :)
Potresti spiegarmi che programmino vorresti implementare? :)
Ciao
Free hosting.
Whois
Cerco gente interessata, bloggers,moderatori,programmatori & o scripter per far rinascere il progetto bigbug.
Topic di riferimento: http://forum.big-bug.net/news-dal-web-f7/apertura-nuovo-sito-t1798.html
User avatar
k8
Admin
 
Posts: 2022
Joined: 06 Jun 2006 16:00

Re: [c] bug in gcc con 3 scanf

Postby francy12 on 21 Jul 2008 09:49

grazie!^^
volevo compilare un semplice programmino che scambiava di posto due valori interi tramite una funzione con dei puntatori come parametri. solo che prima volevo dare la possibilità all'utente di scegliere se farlo o meno. per questo avevo messo la variabile char: l'avrei usata come flag in un if e in caso affermativo avrei effettuato lo scambio! :P
Wall mi chiedo perchè ho dovuto usare per forza quegli scanf! T_T
facendo altre prove per rendere il più palese possibile il presunto bug, mi sono ridotto a un programmino di poche righe, composto solo da 2 scanf per variabili intere e uno per il carattere ma ottengo dei "segmentation fault" in esecuzione... :think:
comunque non lo devo implementare per forza in un programma... volevo solo sapere se posso aggirare questo fatto :)
ciao e grazie!
francy12
Newbies
 
Posts: 6
Joined: 20 Jul 2008 23:59

Re: [c] bug in gcc con 3 scanf

Postby Bit on 21 Jul 2008 13:10

Non ho capito effettivamente cosa devi fare, ma provando il tuo programma non andava come volevi tu, ma non dava Segmentation fault. Ecco la correzione :
Code: Select all
#include <stdio.h>
main()
{
        int buf[2];
        char n;
        printf("\ninserisici il primo valore:");
        scanf("%d",&buf[0]);
        printf("\ninserisici il secondo valore:");
        scanf("%d",&buf[1]);
        printf("\n\nprimo valore:%d\tsecondo valore:%d",buf[0],buf[1]);
        printf("\ncontinuare? [s/n]:");
        getchar();
        n=getchar();
        printf("\n\nprimo valore:%d\tsecondo valore:%d\t\trisp:%c",buf[0],buf[1],n);
}

Bit
C Programmer
 
Posts: 462
Joined: 14 Jun 2006 16:28

Re: [c] bug in gcc con 3 scanf

Postby EaglE on 21 Jul 2008 13:11

la scanf GIUSTAMENTE legge un intero
lascia nei caratteri _ancora da leggere_ l'a capo riga che hai premuto
la getchar arriva, legge il primo carattere che trova
GIUSTAMENTE legge l'a capo e non il carattere _successivo_ che sarà S o N
per ovviare a sti problemi puoi usare una fflush(stdin); prima di chiamare la getchar
attento che NON funziona su linux
ti conviene invece dire alla scanf di leggere un ulteriore carattere dopo all'intero e di _ignorarlo_
x fare cio usi %*c
esempio scanf("%d%*c",&numero);
EaglE
Newbies
 
Posts: 31
Joined: 25 Jul 2006 17:15

Re: [c] bug in gcc con 3 scanf

Postby francy12 on 21 Jul 2008 16:30

ah! :shock: T_T che stupido.. vero!
ho capito il perchè adesso.. ci potevo arrivare...! Wall
Grazie mille! ^^ alla prossima! ;)
francy12
Newbies
 
Posts: 6
Joined: 20 Jul 2008 23:59


Return to C/C++

Who is online

Users browsing this forum: No registered users and 1 guest

cron