Napisz program, który pobiera nazwę pliku od użytkownika, otwiera plik tekstowy o podanej nazwie w trybie do odczytu, odczytuje z niego liczbę dodatnią całkowitą, po czym zamyka go. Następnie zaczyna sprawdzać zręczność użytkownika: wyświetla na ekranie dowolny napis testowy, po czym oczekuje na wprowadzenie tego napisu przez użytkownika za pomocą klawiatury mierząc czas, jaki jest potrzebny użytkownikowi na wprowadzenie tego napisu. Do pomiaru czasu użyj funkcji time i difftime. Ta czynność pomiaru powtarzana jest tyle razy, ile wynosi liczba odczytana z pierwszego pliku. Rezultat każdego pomiaru czasu zapisywany jest do listy dynamicznej. Dla skończonej serii pomiarów zapisanych w liście obliczana jest średnia wartość. Po zakończeniu testu zręczności program pobiera od użytkownika jeszcze jedną nazwę pliku, otwiera go w trybie do zapisu i zapisuje tam całą zawartość listy dynamicznej oraz – w ostatnim wierszu – obliczoną wartość średnią. Na koniec plik jest zamykany a lista usuwana.
Uwagi:
Zaproponuj własny sposób sprawdzenia, czy plik o podanej nazwie istnieje. Następnie napisz funkcję, która jako argument wywołania przyjmuje nazwę pliku, a zwraca wartość zero, jeżeli pliku nie ma, oraz 1 – jeżeli istnieje. Użyj tej funkcji w swoim programie do sprawdzenia, czy pierwszy plik istnieje, a jeżeli nie (np. kiedy użytkownik zrobi błąd, źle podając nazwę tego pliku), poproś o ponowne podanie nazwy pliku. Użyj tej funkcji do sprawdzenia również, czy drugi plik – do zapisu – istnieje, a jeżeli istnieje, poproś użytkownika o ponowne podanie nazwy pliku do zapisu (chcemy chronić już istniejące pliki przed ich nadpisaniem nowymi danymi).
Do sprawdzania błędów związanych z dostępem do pliku wykorzystaj stałą errno a do generowania komunikatów funkcje strerror i perror. Wszelkie komunikaty o sytuacjach błędnych, jakie wystąpiły w trakcie pracy programu, wysyłaj do standardowego strumienia dla komunikatów o błędach stderr.
Napisz kod programu tak, aby obsłużył również inne sytuacje błędne, tj. np. kiedy pierwszy plik będzie pusty, lub będzie zawierał liczbę ujemną (przyjmij, że inny napis niż liczba całkowita nie może w nim wystąpić).