Zapisywanie i odczytywanie liczb z pliku tekstowego.
Ostatnio zmodyfikowano 2018-01-18 13:42
Bercik97 Temat założony przez niniejszego użytkownika |
Zapisywanie i odczytywanie liczb z pliku tekstowego. » 2018-01-18 12:56:01 Witam, dopiero zacząłem pliki i mam taki problem, chce wylosować sobie 100 liczb randomowych, zapisać je i nast. je wyświetlić. Program zapisuje mi te liczby tylko nie wiem jak skrócić ten kod, tzn. nie chce dwa razy otwierać tego samego pliku i zamykać, tylko chce zrobić to za jednym razem. Pomożecie? #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 100
int main() { FILE * plik; char nazwa[ N ]; int x, i, y; srand( time( NULL ) ); plik = fopen( "eloski.txt", "w" ); if( plik == NULL ) { puts( "Nie udalo sie otworzyc pliku!" ); exit( EXIT_FAILURE ); } for( i = 0; i < N; i++ ) { x = rand() % 20 + 1; fprintf( plik, "%d\n", x ); } fclose( plik ); plik = fopen( "eloski.txt", "r" ); if( plik == NULL ) { puts( "Nie udalo sie otworzyc pliku!" ); exit( EXIT_FAILURE ); } i = 1; while(( fscanf( plik, "%d\n", & x ) ) != EOF ) { printf( "#%d.%d\n", i, x ); i++; } fclose( plik ); return 0; }
edit: ok, już zrobiłem ale nie wiem czy to jest bezpieczna składania, zamieniłem to zamiast tego drugiego otwierania pliku aż do końca programu. for( i = 0; i < N; i++ ) { fscanf( plik, "%d\n", & x[ i ] ); printf( "%d\n", x[ i ] ); }
|
|
geceves |
» 2018-01-18 13:08:19 Po prostu nie zamykaj pliku i nie otwieraj ponownie pliku. Funkcje, które mogą Cię zainteresować to fseek oraz fflush . Może także, Ci się spodobać: #include <stdio.h> char mybuffer[ 80 ]; int main() { FILE * pFile; pFile = fopen( "example.txt", "r+" ); if( pFile == NULL ) perror( "Error opening file" ); else { fputs( "test", pFile ); fflush( pFile ); fgets( mybuffer, 80, pFile ); puts( mybuffer ); fclose( pFile ); return 0; } }
http://www.cplusplus.com/reference/cstdio/fflush/ |
|
Bercik97 Temat założony przez niniejszego użytkownika |
» 2018-01-18 13:12:15 To co mam wpisać jako drugi argument fopen? w+r?
edit: aa ok |
|
geceves |
» 2018-01-18 13:42:01 Jeżeli masz problem z "w+" i "r+" to polecam przeczytać: https://stackoverflow.com/questions/21113919/difference-between-r-and-w-in-fopenAlbo przetestować sobie zamieszczony tam kod: #include <stdio.h> int main() { FILE * fp; fp = fopen( "test.txt", "w+" ); fprintf( fp, "This is testing for fprintf...\n" ); fputs( "This is testing for fputs...\n", fp ); fclose( fp ); }
#include <stdio.h> int main() { FILE * fp; fp = fopen( "test.txt", "w+" ); fclose( fp ); }
Następnie to samo zmieniając "w+" na "r+" i porównaj sobie za każdym razem jak wyglądają pliki. |
|
« 1 » |