noindyfikator Temat założony przez niniejszego użytkownika |
» 2014-01-23 10:59:52 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <string.h>
struct student { char index[ 100 ]; char imie[ 100 ]; char nazwisko[ 100 ]; char wiek[ 100 ]; };
int main() { int wybor; printf( "Aby zapisac studentow wcisnij 1\n" ); printf( "Aby wczytac z pliku zapisanych studentow wcisnij 2\n" ); printf( "Aby wyczyscic obecna baze danych wcisnij 3\n" ); printf( "Wybor: " ); scanf( "%d", & wybor ); switch( wybor ) { case 1: zapis(); break; case 2: odczyt(); break; case 3: wyczysc(); break; default: printf( "\nWybrales inny klawisz, bledny klawisz wut.." ); break; } return 0; }
int zapis() { FILE * plik; int licznik = 0; int rozmiar; system( "cls" ); printf( "Podaj liczbe studentow: " ); scanf( "%d", & rozmiar ); printf( "\n" ); struct student * politechnika; politechnika = malloc( sizeof( struct student ) * rozmiar ); do { printf( "Podaj numer idenxu: " ); scanf( "%s", politechnika[ licznik ].index ); printf( "Podaj imie studenta: " ); scanf( "%s", politechnika[ licznik ].imie ); printf( "Podaj nazwisko studenta: " ); scanf( "%s", politechnika[ licznik ].nazwisko ); printf( "Podaj wiek studenta: " ); scanf( "%s", politechnika[ licznik ].wiek ); printf( "\n" ); licznik++; } while( licznik < rozmiar ); plik = fopen( "Baza danych do struktury.txt", "a+" ); for( licznik = 0; licznik < rozmiar; licznik++ ) { fprintf( plik, "Index:%s\n", politechnika[ licznik ].index ); fprintf( plik, "Imie:%s\n", politechnika[ licznik ].imie ); fprintf( plik, "Nazwisko:%s\n", politechnika[ licznik ].nazwisko ); fprintf( plik, "Wiek:%s\n", politechnika[ licznik ].wiek ); fprintf( plik, "-----------------" ); fprintf( plik, "\n\n" ); } fclose( plik ); return 0; }
int odczyt() { FILE * plik; system( "cls" ); char odczyt[ 100 ]; plik = fopen( "Baza danych do struktury.txt", "a+" ); while( fscanf( plik, "%s", odczyt ) != EOF ) { printf( "%s\n", odczyt ); } int powrot; printf( "Jezeli chcesz wrocic nacisnij 1\n" ); printf( "Jezeli chcesz zamknac program nacisnij dowolny klawisz.\n" ); printf( "Wybor: " ); scanf( "%d", & powrot ); if( powrot == 1 ) { system( "cls" ); main(); } else exit( EXIT_FAILURE ); fclose( plik ); return 0; }
int wyczysc() { printf( "Jestes pewien ze chcesz usunac " ); SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), FOREGROUND_RED ); printf( "CALA " ); SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN ); printf( "baze danych? " ); printf( "T/N: " ); fflush( stdin ); char odpowiedz[ 100 ]; scanf( "%s", & odpowiedz ); if( strcmp( odpowiedz, "T" ) == 0 || strcmp( odpowiedz, "Tak" ) == 0 || strcmp( odpowiedz, "t" ) == 0 || strcmp( odpowiedz, "tak" ) == 0 ) { FILE * plik; plik = fopen( "Baza danych do struktury.txt", "w" ); fclose( plik ); system( "cls" ); SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), FOREGROUND_RED | FOREGROUND_BLUE ); printf( "Baza dancych zostala wyczyszczona poprawnie =)\n\n" ); SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN ); main(); } else { system( "cls" ); main(); } return 0; }
mm ;p |
|
alixir |
» 2014-01-23 11:16:31 Po 1. Nie używasz nigdzie metody podanej przeze mnie ” %[ ^\n ] ” Po 2. Wczytując w ten sposób zostaje ci w buforze znak nowej linii. Czyść bufor np. fflush( stdin ); po każdym scanf |
|
noindyfikator Temat założony przez niniejszego użytkownika |
» 2014-01-23 11:20:13 jak użyłem metodę podaną przez ciebie to mi program się kompilował ale po uruchomieniu wgl nie wczytywał imienia ;/ |
|
alixir |
» 2014-01-23 11:23:53 Nie mogę znaleźć przyczyny w tym momencie, więc użyj gets( politechnika[ licznik ].imie ) Nie musisz wtedy czyścić bufora nawet. |
|
noindyfikator Temat założony przez niniejszego użytkownika |
» 2014-01-23 11:30:15 teraz o on wgl jakos dziwnie wczytuje te dane.. ;/ |
|
alixir |
» 2014-01-23 11:34:11 #include <conio.h> #include <iostream>
struct student { char index[ 100 ]; char imie[ 100 ]; char nazwisko[ 100 ]; char wiek[ 100 ]; };
int main() { FILE * plik; int licznik = 0; int rozmiar; system( "cls" ); printf( "Podaj liczbe studentow: " ); scanf_s( "%d", & rozmiar ); fflush( stdin ); printf( "\n" ); struct student * politechnika; politechnika =( struct student * ) malloc( sizeof( struct student ) * rozmiar ); do { printf( "Podaj numer idenxu: " ); gets( politechnika[ licznik ].index ); printf( "Podaj imie studenta: " ); gets( politechnika[ licznik ].imie ); printf( "Podaj nazwisko studenta: " ); gets( politechnika[ licznik ].nazwisko ); printf( "Podaj wiek studenta: " ); gets( politechnika[ licznik ].wiek ); printf( "\n" ); licznik++; } while( licznik < rozmiar ); plik = fopen( "Baza danych do struktury.txt", "a+" ); for( licznik = 0; licznik < rozmiar; licznik++ ) { fprintf( plik, "Index:%s\n", politechnika[ licznik ].index ); fprintf( plik, "Imie:%s\n", politechnika[ licznik ].imie ); fprintf( plik, "Nazwisko:%s\n", politechnika[ licznik ].nazwisko ); fprintf( plik, "Wiek:%s\n", politechnika[ licznik ].wiek ); fprintf( plik, "-----------------" ); fprintf( plik, "\n\n" ); } fclose( plik ); free( politechnika ); return 0; }
|
|
MrPoxipol |
» 2014-01-23 14:09:52 A ogólnie to celowo mieszasz C z C++ ? W czystym C nie ma klas. |
Ale są struktury i nic nie miesza. |
|
alixir |
» 2014-01-23 14:22:45 Jak to pisałem to nie widziałem całego kodu, a na pierwszy rzut oka wyglądało to na tablicę obiektów. |
|
1 « 2 » 3 |