Pengaturcaraan C

Cara menggunakan fungsi gettimeofday dalam bahasa C?

Cara menggunakan fungsi gettimeofday dalam bahasa C?
The gettimeofday () fungsi mendapat masa jam sistem. Waktu semasa dinyatakan dalam detik yang berlalu dan mikrodetik sejak 00:00:00, 1 Januari 1970 (Unix Epoch). Dalam artikel ini, kami akan menunjukkan kepada anda cara menggunakan gettimeofday () berfungsi dalam Linux. Oleh itu, mari kita mulakan.

Sintaks

int gettimeofday (struktur waktu * tp, zon waktu struktur * tz)

The gettimeofday () fungsi ditakrifkan dalam sys / masa.h fail pengepala.

Hujah

Fungsi ini mengambil dua argumen:

Yang 1st hujah menunjukkan kepada jangka masa struktur. The jangka masa struktur dinyatakan seperti di bawah di sys / masa.h fail pengepala:

jangka masa struktur
time_t tv_sec; // digunakan selama beberapa saat
suseconds_t tv_usec; // digunakan untuk mikrodetik

Struktur selang waktu mewakili masa kalendar. Ia mempunyai dua ahli:

Yang 2nd hujah menunjukkan kepada Zon masa struktur. Ia biasanya ditetapkan ke NULL kerana zon waktu struct usang. Hujah ini hanya untuk keserasian ke belakang.

Nilai pulangan

Pada kejayaan, yang gettimeofday () return 0, untuk kegagalan fungsi kembali -1.

Masa dan Cetakan yang Mudah

#sertakan
#sertakan
int utama ()
masa semasa struct_waktu;
gettimeofday (& current_time, NULL);
printf ("saat:% ld \ nkejap mikro:% ld",
masa_ semasa.tv_sec, current_time.tv_usec);
pulangan 0;

Pengeluaran:

Di sini, sys / masa.h telah dimasukkan untuk gettimeofday () fungsi dan struktur jangka masa. The gettimeofday () fungsi menetapkan masa dalam anggota struktur timeval (current_time). tv_sec adalah bilangan terpadu detik yang berlalu sejak permulaan Zaman UNIX, pada tengah malam UTC pada 1 Januari 1970 dan tv_usec adalah bilangan mikrodetik tambahan yang berlalu dari tv_sec. Sekiranya anda menjalankan program, anda akan melihat hasilnya. Setiap kali anda menjalankan program, output akan berubah.

Kesalahan Hujah NULL

#sertakan
#sertakan
int utama ()
 
masa semasa struct_waktu;
gettimeofday (NULL, NULL);
pulangan 0;

Pengeluaran:

Dalam contoh ini menunjukkan bahawa hujah pertama dari gettimeofday () fungsi tidak boleh NULL. Amaran kompilasi akan datang sekiranya hujah pertama adalah NULL.

Memformat Contoh Masa Semasa

#sertakan
#sertakan
#sertakan
int utama ()
tv waktu berstruktur;
masa_t t;
maklumat struktur tm *;
penampan char [64];
 
gettimeofday (& tv, NULL);
t = tv.tv_sec;
info = waktu tempatan (& t);
printf ("% s", waktu operasi (maklumat));
strftime (buffer, sizeof buffer, "Hari ini adalah% A,% B% d.\ n ", maklumat);
printf ("% s", penyangga);
strftime (buffer, sizeof buffer, "Masa adalah% I:% M% p.\ n ", maklumat);
printf ("% s", penyangga);
pulangan 0;

Pengeluaran:

Dalam contoh ini menunjukkan cara mencetak Tarikh dan Waktu dalam format yang berbeza. Ia bukanlah suatu yang sangat mudah untuk mewakili tarikh dari nilai pulangan gettimeofday () fungsi . Di sini, waktu tempatan () dan waktu senggang () fungsi digunakan untuk mewakili nilai kembali dengan baik gettimeofday ().

The waktu tempatan () fungsi mengambil argumen, yang merupakan rujukan ke penunjuk dari tv_sec bidang jangka masa struct dan mengembalikan rujukan ke penunjuk a struktur tm objek.

The waktu senggang () fungsi akan menghasilkan rentetan berformat yang diperibadikan yang menunjukkan tarikh dan masa dari struktur tm penunjuk. Penentu format digunakan untuk paparan berformat. Contohnya, rentetan format “% d-% m-% Y% H:% M:% S” menentukan tarikh dan masa dalam borang ini:

14-04-2020 13:09:42

Berikut adalah penentu penukaran, dapat digunakan untuk paparan berformat:

Penentu Makna
% a Singkatan nama hari kerja mengikut tempat sekarang.
% A Nama hari kerja mengikut lokasi sekarang.
% b Nama bulan yang disingkat mengikut tempat sekarang.
% B Nama bulan penuh mengikut lokasi sekarang.
% c Perwakilan pilihan tarikh dan masa untuk lokasi sekarang.
% d Sebagai nombor perpuluhan untuk hari bulan (julat 01 - 31).
% H Menggunakan 24 jam (jarak 00 - 23) hingga jam sebagai nombor perpuluhan.
% Saya Menggunakan 12 jam (julat 00 - 23) hingga jam sebagai nombor perpuluhan.
% j Sebagai nombor perpuluhan untuk hari dalam setahun (julat 001-366).
% m Sebagai nombor perpuluhan untuk bulan (julat 01 - 12).
% M Nombor perpuluhan minit.
% p Berdasarkan nilai masa yang ditentukan, sama ada 'am' atau 'pm' atau rentetan yang setara untuk lokasi semasa.
% S Nombor perpuluhan kedua.
% x Perwakilan pilihan tarikh untuk lokasi semasa, tetapi tanpa masa.
% X Perwakilan pilihan masa untuk lokasi semasa, tetapi tanpa tarikh.
% y Tahun adalah perpuluhan tetapi tiada abad (antara 00 - 99).
% Y Tahun adalah perpuluhan termasuk abad.
% Z Zon waktu.

Menggunakan gettimeofday untuk Mengukur Waktu Pelaksanaan Program

#sertakan
#sertakan
 
int utama ()
 
permulaan, akhir;
gettimeofday (& mulakan, NULL);
 
untuk (int i = 0; i <1e5 ; i++)

 
gettimeofday (& akhir, NULL);
printf ("Masa yang diambil untuk dikira hingga 10 ^ 5 ialah:% ld saat mikro \ n",
(akhir.tv_sec * 1000000 + akhir.tv_usec) -
(mulakan.tv_sec * 1000000 + mula.tv_usec)));
pulangan 0;

Pengeluaran:

Contoh ini menunjukkan bahawa bagaimana gettimeofday () fungsi dapat digunakan untuk pengiraan waktu pelaksanaan program.

Kesimpulannya

Dengan cara ini, yang gettimeofday () fungsi mungkin digunakan dalam Linux. Untuk memindahkan kod yang ada, gettimeofday () fungsi boleh digunakan tetapi dalam kod baru tidak boleh digunakan. jam_gettime ()  fungsi boleh digunakan sebagai ganti gettimeofday ().

Kajian Tetikus Tanpa Wayar Microsoft Sculpt Touch
Saya baru-baru ini membaca mengenai Sentuhan Microsoft Sculpt tetikus tanpa wayar dan memutuskan untuk membelinya. Setelah menggunakannya sebentar, sa...
Trackpad dan Mouse Pointer pada skrin Windows AppyMouse untuk Tablet Windows
Pengguna tablet sering kehilangan penunjuk tetikus, terutama ketika mereka biasa menggunakan komputer riba. Telefon pintar dan tablet skrin sentuh dil...
Butang tetikus tengah tidak berfungsi pada Windows 10
The butang tetikus tengah membantu anda menelusuri halaman web dan skrin yang panjang dengan banyak data. Sekiranya ia berhenti, anda akan menggunakan...