• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

dzielenie na oddzielne zmienne słów sczytanych fgets'em

Object Storage Arubacloud
0 głosów
450 wizyt
pytanie zadane 1 grudnia 2015 w C i C++ przez Koko$ Użytkownik (740 p.)
Witam, ma ktoś jakiś pomysł na to, aby po tym jak program sczyta linie wpisaną przeż użytkownika dodało mi każde z nich do innej tablicy charów. Chodzi o C. z góry dzięki za pomoc

4 odpowiedzi

+1 głos
odpowiedź 2 grudnia 2015 przez Krawiec91 Pasjonat (19,600 p.)
wybrane 3 grudnia 2015 przez Koko$
 
Najlepsza

Kolega draghan propozycje podrzucił, jak można ten problem rozwiązać. Ze swojej strony, mógłbym ewentualnie zaproponować użycie funkcji strtok(). Wrzuć co stworzyłeś, to łatwiej będzie Ci pomóc, podpowiedzieć coś.
http://www.cplusplus.com/reference/cstring/strtok/?kw=strtok

komentarz 2 grudnia 2015 przez Krawiec91 Pasjonat (19,600 p.)
Tak, musi być to zamienione. Albo pola struktury Data na int albo to z czym porównujesz pola struktury Data(rok,miesiac,dzien) na char.
komentarz 2 grudnia 2015 przez Koko$ Użytkownik (740 p.)
W pewnym miejscu musze wyliczyć modulo. Da rade na charach?
komentarz 2 grudnia 2015 przez Krawiec91 Pasjonat (19,600 p.)

Może kompilator by to przetrawił, ale będzie podobnego rodzaju problem. Jeśli podasz np.rok 1991, to modulo będzie wykonywane na liczbie 31h (kod ASCII znaku '1') a nie na liczbie 1991.
Troche polukałem po kodzie:
 

//Dane stanowia sekwencje zlozone z nazwiska,imienia oraz daty urodzenia postaci rrrr-mm-dd.
//Wprowadzanie danych konczy pusty wiersz.
//Wyswietlic liste nazwisk uporzadkowana w/g malejacego wieku.
//Liczba osob opisanych w danych wejsciowyuch nie przekracza 40.
//Zastosowac sortowanie metoda prostego wybierania

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

enum {wyst,niewyst} blad=niewyst;//okreslenie czy blad wystapil, czy nie

enum {przestepny,nieprzestepny} rok=nieprzestepny;//zmienna okreslajaca czy rok jest przestepny

typedef struct
{
    int rok;
    int miesiac;
    int dzien;
} Data;

typedef struct
{
    char imie [30];
    char nazwisko[30];
    Data data_ur;
    int n;//klucz do sortowania w formacie rrrrmmdd
} Osoba;


int main()
{
    int i=0;
    int x=0;//sprawdza ile osob zostalo wprowadzonych
    char ciag[256];
    char znaki_podzialu[] = " -";
    char * token;
    char ciete [5][100];//k
    Osoba osoby[40];
    puts("Program sortujacy osoby w/g malejacego wieku.");
    puts("Wpisz imie, nazwisko oraz date urodzenia(rrrr-mm-dd).");
    puts("Aby zakonczyc wpisywanie wybierz <q/Q>.");
    while (i++<2)//petla do wczytywania do 40 osob
    {
        fgets(ciag,256,stdin);
        if (*(ciag)=='q')
            break;
        token = strtok(ciag, znaki_podzialu);
        int j=0;
        while( token != NULL )
        {
            strcpy(ciete[j],token);
            j++;
            token = strtok( NULL, znaki_podzialu );
        }
        strcpy(osoby[i].imie,ciete[0]);
        strcpy(osoby[i].nazwisko,ciete[1]);

        osoby[i].data_ur.rok=atoi(ciete[2]);
        osoby[i].data_ur.miesiac=atoi(ciete[3]);
        osoby[i].data_ur.dzien=atoi(ciete[4]);
    }
    puts("Dziekuwa.");
    return 0;
}

Data jest zrobiona na zmiennych int, co potem upraszcza sprawę przy porównianiach, modulo, etc.

komentarz 3 grudnia 2015 przez Koko$ Użytkownik (740 p.)
dzięki wielkie, wisze Ci czteropak ;d
komentarz 3 grudnia 2015 przez Krawiec91 Pasjonat (19,600 p.)
Spoko.;) Powiedziałbym, że poproszę to na piśmie.  Ale w tej sytuacji, to nawet nie muszę tego robić.;)
0 głosów
odpowiedź 1 grudnia 2015 przez draghan VIP (106,230 p.)
Szukasz któregokolwiek białego znaku w łańcuchu i na tej podstawie rozdzielasz sobie poszczeŋólne słowa. Możesz to zrobić najprostszą pętlą for, aczkolwiek do wyszukiwania znaków czy podciągów w łańcuchu istnieją odpowiednie funkcje standardowe.
komentarz 1 grudnia 2015 przez Koko$ Użytkownik (740 p.)
o jakich funkcjach mówisz?
komentarz 1 grudnia 2015 przez draghan VIP (106,230 p.)

O funkcjach zadeklarowanych w nagłówku string.h o pięknie brzmiących nazwach: strstr(), strchr() oraz strpbrk().

komentarz 2 grudnia 2015 przez Koko$ Użytkownik (740 p.)
Mógłbyś dać jakieś dalsze podpowiedzi? siedze 2 dzień nad tym i nie moge nic wymyślić a termin oddania projektu mam za 2 dni
0 głosów
odpowiedź 2 grudnia 2015 przez Koko$ Użytkownik (740 p.)
ma ktoś jakiś pomysł jak to zrobić? siedze drugi dzień i nic nie moge wymyślić ;/
0 głosów
odpowiedź 2 grudnia 2015 przez event15 Szeryf (93,790 p.)

sczyta

Nie powinno być "wczyta"? Bo sczytywać to wg PWN oznacza "czytając, porównać tekst przepisany z oryginałem"

Podobne pytania

0 głosów
0 odpowiedzi 145 wizyt
pytanie zadane 8 września 2022 w C i C++ przez benny13 Obywatel (1,150 p.)
0 głosów
0 odpowiedzi 388 wizyt
0 głosów
2 odpowiedzi 707 wizyt
pytanie zadane 29 listopada 2017 w C i C++ przez Krystek102 Bywalec (2,440 p.)

92,624 zapytań

141,482 odpowiedzi

319,822 komentarzy

62,005 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...