Skocz do zawartości

[C] Programowanie w C


green_

Polecane posty

Witam wszystkich :D

 

Dopiero zaczynam uczyć się programować w C

Chciałbym aby program na początku pytał użytkownika czy ma utworzyć plik txt czy wczytać dane z już istniejącego

następnie pytał o nazwę pliku (jeśli plik istnieje to zeby go odrazu otwierał i wczytywał dane)

 

KOD

#include <stdio.h>

#include <stdlib.h>

 

int main()

{

 

char plik[15];

char nazwisko[31], imie[31];

char wartosc[4]

int telefon;

 

FILE *w_pliku;

 

printf("\n Czy chcesz otworzyc istniejacy plik, czy utorzyc nowy:? Wpisz "tak" lub "nie" ")'

gets(wartosc);

 

// Nie mam pomyslu jak sformułować tu warunek który będzie odpowiedzią na "tak" albo "nie"

 

if(wartosc==plik) // nie wiem właśnie jak napisać tę funkcje

 

printf("\nPodaj nazwe pliku: ");

gets(plik);

 

if(wartosc==plik) // nie wiem właśnie jak napisać tę funkcje

 

 

printf("\n Wprowadz Imie i Nazwisko: ");

scanf("%s %s",imie, nazwisko);

 

printf("\n\t\t Wpisano: %s %s\n",imie, nazwisko);

 

printf("\n Wprowadz numer telefonu: ");

scanf("%d",&telefon);

printf("\n\t\tWpisano: %d\n",telefon);

 

 

if((w_pliku=fopen(plik,"w"))!=NULL)

 

 

 

 

 

Kod który wpisałem jest moją modyfikacją fragmentu kody znalezionego w internecie... ale nie wiem jak napisać warunki dla "tak" i "nie" oraz gdy podana nazwa pliku już istnieje( i tu aby program go otwieral i wczytywał dane)

 

nie rozumie też tego zapisu funki if:

KODif((w_pliku=fopen(plik,"w"))!=NULL)

 

Jaką polecacie literaturę dla początkujących traktujacą o programowaniu w C ? Może być w wersji elektronicznej.

 

Z góry dziękuję za udzielenie pomocy :rolleyes:

Link do komentarza
Udostępnij na innych stronach

tu masz jedno z możliwych rozwiązań

 

KOD

#include <stdio.h>

#include <stdlib.h>

 

int main()

{

char plik[15];

char nazwisko[31], imie[31];

char wartosc[3];

char telefon[10];

FILE *w_pliku;

 

printf("\nCzy chcesz otworzyc istniejacy plik, czy utorzyc nowy?");

printf("\nWpisz: ''tak'' lub ''nie''| ");

gets(wartosc);

 

// Nie mam pomyslu jak sformułować tu warunek który będzie odpowiedzią na "tak" albo "nie"

 

if(wartosc[0]=='t' && wartosc[1]=='a' && wartosc[2]=='k')

{

printf("\nPodaj nazwe pliku do otwarcia: ");

gets(plik);

if((w_pliku=fopen(plik,"rb"))==NULL)

{

printf("\nBlad otwarcia pliku!!!\n\n");

system("PAUSE");

return -1;

}

fread(&nazwisko,sizeof(nazwisko),1,w_pliku);

fread(&imie,sizeof(imie),1,w_pliku);

fread(&telefon,sizeof(telefon),1,w_pliku);

printf("\nNazwisko: %s",nazwisko);

printf("\nImie: %s",imie);

printf("\nNumer telefonu: %s\n",telefon);

fclose(w_pliku);

} else

{

printf("\nPodaj nazwe dla tworzonego pliku: ");

gets(plik);

if((w_pliku=fopen(plik,"wb"))==NULL)

{

printf("\nBlad otwarcia pliku!!!\n\n");

system("PAUSE");

return -1;

}

printf("\nPodaj nazwisko: ");

gets(nazwisko);

printf("\nPodaj imie: ");

gets(imie);

printf("\nPodaj numer telefonu: ");

gets(telefon);

fwrite(&nazwisko,sizeof(nazwisko),1,w_pliku);

fwrite(&imie,sizeof(imie),1,w_pliku);

fwrite(&telefon,sizeof(telefon),1,w_pliku);

fclose(w_pliku);

}

 

system("PAUSE");

return 0;

}

 

 

if((w_pliku=fopen(plik,"w"))!=NULL) - taki zapis oznacza: jeśli operacja otwarcia pliku zakończy sie pozytywnie... :rolleyes: (tak w dużym uproszczeniu...)

 

Pozdrawiam!

Link do komentarza
Udostępnij na innych stronach

tu masz jedno z możliwych rozwiązań

 

KOD

#include <stdio.h>

#include <stdlib.h>

 

int main()

{

char plik[15];

char nazwisko[31], imie[31];

char wartosc[3];

char telefon[10];

FILE *w_pliku;

 

printf("\nCzy chcesz otworzyc istniejacy plik, czy utorzyc nowy?");

printf("\nWpisz: ''tak'' lub ''nie''| ");

gets(wartosc);

 

// Nie mam pomyslu jak sformułować tu warunek który będzie odpowiedzią na "tak" albo "nie"

 

if(wartosc[0]=='t' && wartosc[1]=='a' && wartosc[2]=='k')

{

printf("\nPodaj nazwe pliku do otwarcia: ");

gets(plik);

if((w_pliku=fopen(plik,"rb"))==NULL)

{

printf("\nBlad otwarcia pliku!!!\n\n");

system("PAUSE");

return -1;

}

fread(&nazwisko,sizeof(nazwisko),1,w_pliku);

fread(&imie,sizeof(imie),1,w_pliku);

fread(&telefon,sizeof(telefon),1,w_pliku);

printf("\nNazwisko: %s",nazwisko);

printf("\nImie: %s",imie);

printf("\nNumer telefonu: %s\n",telefon);

fclose(w_pliku);

} else

{

printf("\nPodaj nazwe dla tworzonego pliku: ");

gets(plik);

if((w_pliku=fopen(plik,"wb"))==NULL)

{

printf("\nBlad otwarcia pliku!!!\n\n");

system("PAUSE");

return -1;

}

printf("\nPodaj nazwisko: ");

gets(nazwisko);

printf("\nPodaj imie: ");

gets(imie);

printf("\nPodaj numer telefonu: ");

gets(telefon);

fwrite(&nazwisko,sizeof(nazwisko),1,w_pliku);

fwrite(&imie,sizeof(imie),1,w_pliku);

fwrite(&telefon,sizeof(telefon),1,w_pliku);

fclose(w_pliku);

}

 

system("PAUSE");

return 0;

}

 

 

if((w_pliku=fopen(plik,"w"))!=NULL) - taki zapis oznacza: jeśli operacja otwarcia pliku zakończy sie pozytywnie... :rolleyes: (tak w dużym uproszczeniu...)

 

Pozdrawiam!

 

 

hej, dzięki za zainteresowanie i pomoc :)

Chodziło mi o czyste C. Moglibyście mnie oświecić co oznacza taki zapis

KOD C#

Myślałem, że chodzi co czyste c, ale najwyraźniej tak nie jest.... czyżby to miało oznaczać pomieszanie C/C++?

 

Kurcze, sporo z tego kodu nie rozumie... macie może jakieś książki do nauki C dla początkujących? :)

 

Xevil21 gdybyś mógł się wytłumaczyć z tego kodu byłbym Ci bardzo wdzięczny.. :)

 

nie rozumie chociażby tego zapisu:

KOD

if(wartosc[0]=='t' && wartosc[1]=='a' && wartosc[2]=='k') //co oznaczają te podwójne & ?

 

fread // z czym to się je, bo widzę to pierwszy raz na oczy? to to samo co scanf ?

filewrite // jak mniemam służy do zapisywania do pliku...? jak to stosować ?

 

 

Czy zmienna

KOD char wartosc[3]

nie powinna rezerwować czterech znaków? ostatni dla zera?

 

Ja prosiłem o małą pomoc, a dostałem cały kod programu.... i jak tu człowiek ma się tego nauczyć :D Nie mniej jednak ogromne dzięki za pomoc :) Zauważyłem, że całkiem dobrze uczy mi się analizując kod programu... :)

heh...torchę szkoda, że taki gotowiec nie przejdzie, bo koleś sprawdza, czy się rozumie napisany kod.... ale z drugiej strony mobilizuje to do nauki :D

Link do komentarza
Udostępnij na innych stronach

&& oznacza AND czyli koniunkcje, czyli warunki po ub stronach end-a mają być prawdą. A C# to inny język programowania, jak chcesz samo C to napisz "C" a jak boisz się, że Ciebie nie zrozumieją to "czyste C". A tablica powinna mieć 4 elementy rzeczywiście, ponieważ nie ma to pisze się po pamięci. Program jest banalny, 10 minut szukania po necie opisu każdej funkcji, a pewnie facet uczył C was. referncja do c dla leniwych co nie szukają w necie

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

char wartosc[3]

 

nie powinna rezerwować czterech znaków? ostatni dla zera?

 

Mój błąd, przepraszam... tak, powinna rezerwować cztery elementy.

 

(na resztę pytań znajdziesz odpowiedź na stronie z linku,

 

który podał Ci Force, w poście wyżej)

 

Pozdrawiam!

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...