Strona 1 z 1

C blad Segmentation fault

: 30 lis 2008, 12:17
autor: warriorek
Witam. Rozwiazuje zadania z ksiazki "Szkola programowania - Jezyk C". Po napisaniu programu realizujacego zadanie 4.3 i probie jego uruchomienia wyskakuje mi blad:

Kod: Zaznacz cały

Podaj liczbe: 2.4356
Segmentation fault
Oto kod programu:

Kod: Zaznacz cały

/* 4.3-liczba.c -- wyswietla podana liczbe zmiennoprzecinkowa */

#include <stdio.h>

int main(void)
{
	float liczba;
	
	printf("Podaj liczbe: ");
	scanf("%f", liczba);
	printf("Wpisano liczbe %.1f lub %.1e\n", liczba, liczba);
	printf("Wpisano liczbe %+.3f lub %.3e\n", liczba, liczba);
}
Czy popelnilem jakis blad? Jak pozbyc sie tego bledu?

Odp: C blad Segmentation fault

: 30 lis 2008, 17:14
autor: Carnophage
Po pierwsze i najwazniejsze:

Kod: Zaznacz cały

scanf("%f", &liczba);
Po drugie jak deklarujesz funkcje main jako zwracajaca int, to konczymy ja linijka

Kod: Zaznacz cały

return 0;
Po trzecie polecam uzywac parametru -Wall, przy uzywaniu gcc.

Odp: C blad Segmentation fault

: 30 lis 2008, 17:14
autor: el.pescado
Najlepiej poczytaj o programach gdb i valgrind, programy kompiluj z opcją -Wall, czytaj komunikaty kompilatora, a na koniec czytaj dokumentację używanych funkcji:
man scanf pisze: f Matches an optionally signed floating-point number]must be a pointer to float[/U].
Słowem:

Kod: Zaznacz cały

	scanf("%f", &liczba);

Odp: C blad Segmentation fault

: 01 gru 2008, 00:35
autor: gril
Warto też poczytać o automatycznej konwersji typów :)