struktury!!



Widzisz wersję archiwalną tematu "struktury!!" z forum pl.comp.lang.c





Artur Drzyzga - 8 Sie 1999, 03:00

Jak zapisac do pliku nastepujaca strukture
struct pracownicy
{
kod char[10];
imie char[20];
nazwisko char[30];
haslo char[10];

};



Nie bardzo wiem jak sie za to zabrać
prosze o kawalek kodu  (BUILDER)!!



Adam 'aimsoft' Michalski - 8 Sie 1999, 03:00


Jak zapisac do pliku nastepujaca strukture
struct pracownicy
{
kod char[10];
imie char[20];
nazwisko char[30];
haslo char[10];
};



Uwaga wstepna: nie wiem czy nie bedziesz musial wlaczyc czegos 'structure
packing' (nie znam polskiego terminu). W niektorych Borlandach trzeba bylo
(nie wiem jak to bedzie w przypadku buildera).

Nie bardzo wiem jak sie za to zabrać
prosze o kawalek kodu  (BUILDER)!!



Oto prosty (i niekompletny) przyklad:

#include <stdio.h

struct pracownicy
{
char kod[10];
char imie[20];
char nazwisko[30];
char haslo[10];

};



void main()
{
   FILE *f;
   //otwarcie pliku itp. standardowe operacje...
   pracownicy kolesie;
   //wypelnienie struktury...
   fwrite(&kolesie, sizeof(struct pracownicy), 1, f);

}



Pozdrawiam

Adam Michalski, 17 lat


Ygreg - 8 Sie 1999, 03:00


Jak zapisac do pliku nastepujaca strukture
struct pracownicy
{
kod char[10];
imie char[20];
nazwisko char[30];
haslo char[10];
};

Nie bardzo wiem jak sie za to zabrać
prosze o kawalek kodu  (BUILDER)!!



Buildera nie uzywalem, ale nie powinno byc roznic ;-)

Zapis:

struct pracownicy aa;

file=fopen("data", "wb");
fwrite((void*)&aa, sizeof(aa), 1, file);
fclose(file);

I zeby nie bylo nastepnych pytan czytanie:

file=fopen("data", "rb");
fread((void*)&aa, sizeof(aa), 1, file);
fclose(file);

_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 GCS d- s+: a--- C++ UL+ P+++ L+(++) E- W++ N++ o? K? w(---) O? M? V?
 Grzegorz Plebanski      !PS !PE Y? PGP t+ 5 X+ R tv b+(++) DI(+) D+ G


Milo - 8 Sie 1999, 03:00



| Jak zapisac do pliku nastepujaca strukture
| struct pracownicy
| {
| kod char[10];
| imie char[20];
| nazwisko char[30];
| haslo char[10];
| };

Uwaga wstepna: nie wiem czy nie bedziesz musial wlaczyc czegos 'structure
packing' (nie znam polskiego terminu). W niektorych Borlandach trzeba bylo
(nie wiem jak to bedzie w przypadku buildera).

| Nie bardzo wiem jak sie za to zabrać
| prosze o kawalek kodu  (BUILDER)!!

Oto prosty (i niekompletny) przyklad:

#include <stdio.h

struct pracownicy
{
char kod[10];
char imie[20];
char nazwisko[30];
char haslo[10];
};

void main()
{
   FILE *f;
   file://otwarcie pliku itp. standardowe operacje...
   pracownicy kolesie;
   file://wypelnienie struktury...
   fwrite(&kolesie, sizeof(struct pracownicy), 1, f);
}



A nie prosciej uzyc typowych dla C++(w koncu to C++, a nie C Builder)
strumieni(fstream)?

wtedy masz plik.write(obiekt,rozmiar_obiektu) lub
plik.read(obiekt,rozmiar_obiektu);

Czy nie po to wymyslono C++, aby nie wracac do operacji wykonywanych przy
uzyciu wskaznika FILE?:#



Marek Bisz - 9 Sie 1999, 03:00


Jak zapisac do pliku nastepujaca strukture
struct pracownicy
{
kod char[10];
imie char[20];
nazwisko char[30];
haslo char[10];
};

Nie bardzo wiem jak sie za to zabrać
prosze o kawalek kodu  (BUILDER)!!



Wyglada to na fragment czegos wiekszego, wiec moze od razu zastanow sie nad
wykorzystaniem baz danych (zakladka data acces/data contol, katalog
examples/db). Zaoszczedzi Ci to mase roboty, jesli ma sie z tego cos
wiekszego urodzic...

--------------------
http://www.hotele.net - Baza danych polskich hoteli, obiektow turystycznych
i noclegowych
Tysiace pozycji ! Mozliwosc dolaczenia wlasnego komentarza do kazdego
obiektu !
Zajrzyj koniecznie ! Strona w nieustajacej rozbudowie !


Maciej Maczynski - 9 Sie 1999, 03:00

<---------------------- CUT --------------------
A nie prosciej uzyc typowych dla C++(w koncu to C++, a nie C Builder)
strumieni(fstream)?

wtedy masz plik.write(obiekt,rozmiar_obiektu) lub
plik.read(obiekt,rozmiar_obiektu);

Czy nie po to wymyslono C++, aby nie wracac do operacji wykonywanych przy
uzyciu wskaznika FILE?:#



Nie.  C++, (a przedtem C with Classes) wymyslono po to, zeby miec klasy
:))))
Strumienie wymyslono po to, zeby uniknac problemow z kontrola typow
argumentow ( a raczej jej braku ) w printf, scanf etc.  Przynajmniej takie
wrazenie odnioslem po lekturze "C++ Design & Implementation" Stroustrup'a.
Ze skrucha przyznaje, ze mnie na przyklad jako staremu "C"-ownikowi trudno
mi sie rozstac z FILE ...

Pozdrawiam,
Maciej


Adam 'aimsoft' Michalski - 9 Sie 1999, 03:00




| Jak zapisac do pliku nastepujaca strukture
| struct pracownicy
| {
| kod char[10];
| imie char[20];
| nazwisko char[30];
| haslo char[10];
| };

| Uwaga wstepna: nie wiem czy nie bedziesz musial wlaczyc czegos 'structure
| packing' (nie znam polskiego terminu). W niektorych Borlandach trzeba
bylo
| (nie wiem jak to bedzie w przypadku buildera).

| Nie bardzo wiem jak sie za to zabrać
| prosze o kawalek kodu  (BUILDER)!!

| Oto prosty (i niekompletny) przyklad:

| #include <stdio.h

| struct pracownicy
| {
| char kod[10];
| char imie[20];
| char nazwisko[30];
| char haslo[10];
| };

| void main()
| {
|    FILE *f;
|    file://otwarcie pliku itp. standardowe operacje...
|    pracownicy kolesie;
|    file://wypelnienie struktury...
|    fwrite(&kolesie, sizeof(struct pracownicy), 1, f);
| }
A nie prosciej uzyc typowych dla C++(w koncu to C++, a nie C Builder)
strumieni(fstream)?

wtedy masz plik.write(obiekt,rozmiar_obiektu) lub
plik.read(obiekt,rozmiar_obiektu);

Czy nie po to wymyslono C++, aby nie wracac do operacji wykonywanych przy
uzyciu wskaznika FILE?:#



A czy przedmowca wyraznie zastrzegal, ze to ma byc obiektowo? Nie? No to
czemu sie czepiasz?

Pozdrawiam

Adam Michalski, 17 lat


Artur Drzyzga - 9 Sie 1999, 03:00

Działa !!!!!!

Plik.open("$$$.txtx");
ale w pliku *.h trzeba było zadeklarować :

typedef fstream PracownikFileType; /bez tego kompilator (Builder 3)
wywalał Błąd!!!

A ha nie bardzo wiem jak się przesuwać po rekordach !!!

Dzięki !!!!

<---------------------- CUT --------------------
| A nie prosciej uzyc typowych dla C++(w koncu to C++, a nie C Builder)
| strumieni(fstream)?

| wtedy masz plik.write(obiekt,rozmiar_obiektu) lub
| plik.read(obiekt,rozmiar_obiektu);

| Czy nie po to wymyslono C++, aby nie wracac do operacji wykonywanych przy
| uzyciu wskaznika FILE?:#

Nie.  C++, (a przedtem C with Classes) wymyslono po to, zeby miec klasy
:))))
Strumienie wymyslono po to, zeby uniknac problemow z kontrola typow
argumentow ( a raczej jej braku ) w printf, scanf etc.  Przynajmniej takie
wrazenie odnioslem po lekturze "C++ Design & Implementation" Stroustrup'a.
Ze skrucha przyznaje, ze mnie na przyklad jako staremu "C"-ownikowi trudno
mi sie rozstac z FILE ...

Pozdrawiam,
Maciej




Milo - 9 Sie 1999, 03:00


Działa !!!!!!

Plik.open("$$$.txtx");
ale w pliku *.h trzeba było zadeklarować :

typedef fstream PracownikFileType; /bez tego kompilator (Builder 3)
wywalał Błąd!!!



Nie rozumiem po co ten typedef. Na moim Builderze (tez 3) uzycie fstream nie
sprawia jakis problemow. Czy aby inkludowales plik "fstream.h"? Poza tym,
jesli utworzysz plik w ten sposob:
fstream plik("$$$.txt") to nie musisz juz pisac plik.open("$$$.txt"). Poza
tym zapoznaj sie z lista fag uzywanych przy tworzeniu obiektu, a szczegolnie
z flaga ios::binary, ktora umosliwia pracowanie w trybie binarnym. Ten tryb
jest wymagany, aby read/write dzialalo poprawnie(dziala i bez tego, ale
czasami wyniki moga zaskoczyc).

A ha nie bardzo wiem jak się przesuwać po rekordach !!!



To juz zalezy TYLKO od ciebie i tego w jaki sposob te rekordy zapisujesz. Czy
kolejno, robisz jakies drzewa, czy moze zupelnie inaczej. W kazdym razie
odczytuje sie zwykle tak samo jak sie zapisuje, bo inaczej dostaniesz
kaszane.


Alva - 9 Sie 1999, 03:00


Ze skrucha przyznaje, ze mnie na przyklad jako staremu "C"-ownikowi trudno
mi sie rozstac z FILE ...



A to niepoprawny konserwatysta!

   \|/                  \|/
\o==O=== Pozdrawiam! ====O==o/
-*=.Tomek."Alva".Wroblewski.*-
/oO........................Oo\


Artur Drzyzga - 10 Sie 1999, 03:00

Jak stane na koniec pilku  to nie moge sie z niego ruszyć

 Plik.seekg(pozycja*sizeof(Rekord));

Dlaczego ?


Milo - 10 Sie 1999, 03:00


Jak stane na koniec pilku  to nie moge sie z niego ruszyć

 Plik.seekg(pozycja*sizeof(Rekord));

Dlaczego ?



Bo jest ustawiana flaga bledu(konca pliku). Wymaz wszystkie flagi bledow, a
bedziesz mogl przeprowadzac dalsze operacje. Swoja droga, jesli program
wychodzi poza plik, to cos jest nie tak, chyba ze warunkiem jest wlasnie
osiagniecie konca pliku.

wyznaczniki macierzy... i inne...
Adobe
iterowanie od końca
color w dialogboxie
  • plyta indukcyjna 230 v
  • stanislaw komorowski
  • rysunki plastyczne kobiet
  • C288C288C288C288 s i e r p i e n 2006 C288C288C288C288 1700
  • jak zaprogramowac stacje radiowe w
  • liero;game
  • gry;symulatory;czolgowe
  • jbl gto1264 czy jbl gt5 12 co kupic
  • pozdr f focus czarny
  • Kolekcja tematów z for internetowych ^^ Strona Główna