Problem z float [C]

0

Witam.
Mój problem polega na tym, że wczytując liczby float, tak jakby coś zostaje w buforze i wyrzuca krzaki na ekranie.

Kod programu:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

float a=0.0f;
float b=0.0f;

int main(void)
{
    printf("%sWprowadz wartosc a:");
    scanf("%f",&a);
    printf("\n");
    printf("%sWprowadz wartosc b:");
    scanf("%f",&b);
    printf("\n");    
    
    printf("%f",a);
    printf("\n");
    
    printf("%f", b);
    getch();
} 

Rezultat:

Wprowadz wartosc a:12.3

═╠DAWprowadz wartosc b:12.1

12.300000
12.100000

W czym może być problem? Przy wpisaniu liczby bez '.' krzaczków nie ma.

0

o_O A co to za %s przed tekstem? Tak bywa jak się BEZMYŚLNIE kopiuje kod.

printf("Ala ma kota");
//lub
printf("%s","Ala ma kota");

To %s wskazuje na to że na liście argumentów znajduje się ciąg znaków do wypisania. Tak samo jak %d wskazuje na to ze jest tam int, %f że jest tam float. Przykład:

int x = 10;
float y = 2.5;
char tekst[] = "tekst";
printf("Liczba x = %d, Liczba y = %f, Tekst = %s",x,y,tekst);
0

Dziękuję kolego za pomoc. Mój błąd. Dawno już nic nie pisałem w C i najwyraźniej zapomniałem nawet podstaw.

Ale proszę następnym razem nie mów komuś, że coś tam BEZMYŚLNIE kopiował, bo tego nie możesz stwierdzić.

Pozdrawiam

0
kamil557 napisał(a)

Ale proszę następnym razem nie mów komuś, że coś tam BEZMYŚLNIE kopiował, bo tego nie możesz stwierdzić.

Jeśli tego BEZMYŚLNIE nie kopiowałeś to znaczy, że nie wiesz co robisz i zgadujesz więc popełniłeś dwa razy ten sam błąd przez swoją niewiedzę:) Jeśli natomiast kopiowałeś ( co wydawałoby się bardziej oczywiste ) popełniłbyś ten błąd tylko raz ( i w tedy moglibyśmy podumać, że przez nieuwagę ), a potem go powieliłeś poprzez kopiowanie.

0
Shalom napisał(a)
printf("Ala ma kota");
//lub
printf("%s","Ala ma kota");

Z czego to drugie, wbrew pozorom, jest trochę szybsze…

1 użytkowników online, w tym zalogowanych: 0, gości: 1