Skocz do zawartości
Zamknięcie Forum PC LAB

Szanowny Użytkowniku,

Informujemy, że za 30 dni tj. 30 listopada 2024 r. serwis internetowy Forum PC LAB zostanie zamknięty.

Administrator Serwisu Forum PC LAB - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie: wypowiada całość usług Serwisu Forum PC LAB z zachowaniem miesięcznego okresu wypowiedzenia.

Administrator Serwisu Forum PC LAB informuje, że:

  1. Z dniem 29 listopada 2024 r. zakończy się świadczenie wszystkich usług Serwisu Forum PC LAB. Ważną przyczyną uzasadniającą wypowiedzenie jest zamknięcie Serwisu Forum PC LAB
  2. Dotychczas zamowione przez Użytkownika usługi Serwisu Forum PC LAB będą świadczone w okresie wypowiedzenia tj. do dnia 29 listopada 2024 r.
  3. Po ogłoszeniu zamknięcia Serwisu Forum od dnia 30 października 2024 r. zakładanie nowych kont w serwisie Forum PC LAB nie będzie możliwe
  4. Wraz z zamknięciem Serwisu Forum PC LAB, tj. dnia 29 listopada 2024 r. nie będzie już dostępny katalog treści Forum PC LAB. Do tego czasu Użytkownicy Forum PC LAB mają dostęp do swoich treści w zakładce "Profil", gdzie mają możliwość ich skopiowania lub archiwizowania w formie screenshotów.
  5. Administrator danych osobowych Użytkowników - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie zapewnia realizację praw podmiotów danych osobowych przez cały okres świadczenia usług Serwisu Forum PC LAB. Szczegółowe informacje znajdziesz w Polityce Prywatności

Administrator informuje, iż wraz z zamknięciem Serwisu Forum PC LAB, dane osobowe Użytkowników Serwisu Forum PC LAB zostaną trwale usunięte ze względu na brak podstawy ich dalszego przetwarzania. Proces trwałego usuwania danych z kopii zapasowych może przekroczyć termin zamknięcia Forum PC LAB o kilka miesięcy. Wyjątek może stanowić przetwarzanie danych użytkownika do czasu zakończenia toczących się postepowań.

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

mleko

[c] wczytanie danych z pliku do kilku tablic

Rekomendowane odpowiedzi

witam

mam dane w pliku w takiej postaci

 

michal 2006 12 21 17.00 21.00

jozef 2006 12 24 10.00 22.30

marcin 2006 12 11 15.00 15.30

 

czyli

 

string int int int float float

 

i chcialem teraz wczytac te dane do tablic, na takiej zasadzie, iz:

pierwszy element trafia do tablicy1 (elementry char)

drugi to tablicy2 (elementy int)

trzeci do tablicy3(elementy int)

 

itd itd

z tym ze nie wiem ile bedzie takich wierszy (ale niewiecej niz 100)

tutaj zawsze mozna dacjakis licznik przy wczytywaniu i pozniej bede dzieki niemu wiedzial jak "daleko" moge uzywac tablic

 

tylko teraz pytanie: jak wczytac te dane do roznych tablic ??

gdy dane sa tego samego typu i jest 1 tablicato jest prosto ale w tym wypadku po prostu nei wiem jak :/

 

pomocy!!

 

---------------------

EDIT:

czesciowo sobie poradzilem, jednak ciagle tutaj jest cos zle (wypisuje segmentatio fault):

 

while(!feof(baza)) 
{ 
 for (i=0;i<5;i++) 
{ 
 fscanf(baza,"%s %d %d %d %f %f", &nazwy[i], &rok[i], &miesiac[i], &dzien[i], &godzina_pocz[i], &godzina_koniec[i]);

} 
} 

for (i=0;i<5;i++) 
{ 
 printf("\n%s %d %d %d %2f %2f", nazwy[i], rok[i], miesiac[i], dzien[i], &godzina_pocz[i], &godzina_koniec[i]);

}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

for (i=0;i<5;i++) 
{ 
if(!feof(baza)) 
{ 
	 fscanf(baza,"%s %d %d %d %f %f", &nazwy[i], &rok[i], &miesiac[i], &dzien[i], &god$ 
} 
else break;
} 

for (i=0;i<5;i++) 
{ 
 printf("\n%s %d %d %d %2f %2f", nazwy[i], rok[i], miesiac[i], dzien[i], godzina_p$ 
}

 

Zachowujac twoj sposob to mniej wiecej tak bedzie poprawnie. W oryginalnej wersj tylko raz sprawdzales czy nei koniec pliku, a potem leciales z petla...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

i dalej to samo niestety :/

dla danych

 

michal 2006 12 21 17.00 21.00

jozef 2006 12 24 10.00 22.30

marcin 2006 12 11 15.00 15.30

agnieszka 2006 11 12 10.00 11.00

cherry 2006 11 12 10.11 12.31

 

 

dostaje:

michjozemarcagnicherry 2006 12 21 17.00 21.00

jozemarcagnicherry 2006 12 24 10.00 22.30

marcagnicherry 2006 12 11 15.00 15.30

agnicherry 2006 11 12 10.00 11.00

cherry 2006 11 12 10.11 12.31

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

a ile literek mieści się Tobie w i-tym wierszu tabeli nazwy :question:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

najciekawsze ze taki kod dziala dobrze:

 

while(!feof(baza))

{

// for (i=0;i<5;i++)

//{

if(!feof(baza))

{

fscanf(baza,"%s %d %d %d %f %f", &nazwy[i*3], &rok, &miesiac, &dzien, &godzina_pocz, &godzina_koniec);

}

else break;

//}

i++;

}

 

for (i=0;i<5;i++)

{

printf("\n%s %d %d %d %.2f %.2f", &nazwy[i*3], rok, miesiac, dzien, godzina_pocz,

godzina_koniec);

}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

może po każdym scanf używać fflush(stdin)?

Albo imiona odczytywać po bajcie aż do natrafienia na spację?

 

Wygląda, że nie wstawia '0' na końcu odczytanego imienia.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

jak definiujesz tablicę nazwy?

 

wyraźnie wbijasz zbyt duże elementy, ewentualnie w miejsce wskaźników na łańcuchy zapisujesz same łańcuchy. początek tekstu wygląda dobrze, ale reszta "wjeżdża" na kolejne pozycje - stąd efekt "wydłużania" nazw.

 

no i gdy wjedziesz zbyt daleko... hmm... puszczając wodze wyobraźni, sam SIGSEGV to i tak łagodne i w miarę honorowe wyjście :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

powinno byc cos w stylu:

char nazwy[iloscWierszyWPliku][NajdluzszaNazwa];

 

puszczając wodze wyobraźni, sam SIGSEGV to i tak łagodne i w miarę honorowe wyjście

dziwne, ze nie access violation

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...