Złe wczytywanie danych łańcucha z białym znakiem przez funkcję Scanf("%s", ....);

0

Witam

Mam dziwny problem z funkcją scanf("%s",
Powinna ona obcinać tekst po wykryciu Białego znaku. A jednak coś jest nie tak .
Załączam początek kodu( reszta to obliczenia i działają. Problem z scanf("%s" jest taki , że po wpisaniu np. Jak Nowak program się zamyka. Szukałem co to może być i gdy dodałem funkcje getchar(); to zadziałało. Poniżej 2 kody

 
 #include <stdio.h>
#include <string.h>
#define CALE 2.53 /*Sluzy do definiowania wlasnych stalych*/
 
 
int main(void)
 
{
 
    int wzrost;
    int rozmiar;
    int litery;
    float wynik;
    char nazwa[60];
 
    printf("Podaj imie:\n");
    scanf("%s", nazwa);
    printf("%s, podaj wzrost w centymetrach:\n", nazwa);

Kod działający dla nazwiska 5 literowego np. Jan Nowak

 
 printf("Podaj imie:\n");
    scanf("%s", nazwa);
    getchar();
    getchar();
    getchar();
    getchar();
    getchar();
    printf("%s, podaj wzrost w centymetrach:\n", nazwa);

Używając poniższej formuły też nic sie nie zmienia

 scanf("%s ", nazwa);

Chodzi o to, że muszę dac tyle getchar(); ile liter ma nazwisko! Czyli tak jakby funkcja scanf("%s" pobierała dane po spacji a nie powinna. 2 lata temu przerabiałem to ćwiczenie na tym samym Visual Studio 2010 i działało(potem zarzuciłem naukę i teraz wracam do tego). Co to może być? Jedyne co się zmieniło to windows na 8.1

Pozrawiam
Piotrek

1
scanf("%s "/* spacja! */, ...);
0

Hej

Niestety dalej to samo....

Pozdrawiam
piotrek

1
#include <stdio.h>

int main(void) {
	char a[4*64], b[4*64], c[4*64];
	scanf("%s %s %s", a, b, c);
	printf("%s %s %s", a, b, c);
	return 0;
}

Coś kłamiesz http://ideone.com/6Bdb9f

0

Hej

Nie kłamie, bo i po co. Zobacz, zrobiłem zrzut ekranu, program się natychmiast wyłącza. Ze spacjami czy bez. Nie ma znaczenia
Ideone działa!!!

Jak dam nazwisko z cyframi to je podstawia do wzoru

0

Teraz ładnie kombinacją klawiszy uruchom program tak, aby po zakończeniu swojego działania poczekał na twój sygnał kończący ;)
bodajże ctrl+f5

0

Hej

Nie chce mi się tak uruchomić. Zaraz znika. No tu jeszcze przykład z cyframi. Ewidentnie pobiera te znaki. Nie rozumiem tego

Pozdrawiam

0

Hej

Masz rację wyglada na to ze kłamałem... no dobra źle to rozumowałem. Już wiem, że mój błąd tkwił z złym rozumieniu bufora. Dobra Dziękuje bardzo za wyrozumiałość, i fajnie że jest dział Newbie bo nie wyleciałem z forum.

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