Famas_94 18 Napisano 10 Grudnia 2015 Udostępnij Napisano 10 Grudnia 2015 Witam, Mam problem związany z odczytem danych z pliku tekstowego w c++. Znam metody na odczytanie całego wiersza danych z pliku poprzez strumienie lub instrukcjami fscanf, problem polega na tym, że muszę odczytać oddzielnie każde słowo z danego wiersza danych (podane przeze mnie opcję sepapruję wyrazy tylko jeżeli w pliku występują spacje), które są oddzielone np. : lub ;. np. Adres:Ulica:Nr_mieszkania Dobrze by było mieć to od razu w stringach. char str1[10], str2[10], str3[10]; char year[100]; FILE * fp; fp = fopen ("file.txt", "r+t"); fscanf(fp, "%s:%s:%s:%s", str1, str2, str3, year); printf("Read String1 |%s|\n", str1 ); printf("Read String2 |%s|\n", str2 ); printf("Read String3 |%s|\n", str3 ); printf("Read Integer |%s|\n", year ); fclose(fp); Powyżej przykład programu, który "czyta" oddzielnie wyrazy z wiersza ale tylko oddzielone spacjami. Z góry dzięki za pomoc ; ) Link to post Share on other sites
Fiber 11 Napisano 11 Grudnia 2015 Udostępnij Napisano 11 Grudnia 2015 Zapoznaj się może z: strtok_s() 1 Link to post Share on other sites
Famas_94 18 Napisano 12 Grudnia 2015 Autor Udostępnij Napisano 12 Grudnia 2015 Wydaję mi się, że udało się znaleźć dosyć dobre rozwiązanie. Wykorzystałem trzeci argument funkcji getline, w którą można wprowadzić zmienną typu char, do której jest odczytywana linia tekstu (w moim przypadku wpisywałem ":", ale można to zastąpić dowolnym znakiem), ponadto kolejne wykorzystanie tej funkcji kontynuuje odczyt tej samej linii tekstu tak więc nie ma problemu z podziałem całego wiersza według własnych potrzeb. Dzięki za pomoc, Temat do zamknięcia Link to post Share on other sites
Recommended Posts