Advertisement

04.28.2008 at 04:23AM PDT, ID: 23358343
[x]
Attachment Details
[x]
The Solution Rating System

With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.

  • The Grade of the Solution
  • The Zone Rank of the Expert Providing the Solution
  • The Number of Author and Expert Comments
  • The Number of Experts Contributing
  • The Feedback of the Community

Your Input Matters
Because of the way the system is set up, the most important variable in this equation is you. As a member of Experts Exchange, you are able to cast your vote on the quality of the solutions in regard to how complete, accurate, helpful and easy to understand each solution is. When you provide your feedback, each rating is adjusted accordingly. So, if you see a solution that has a poor rating that you think is a good solution, let us know by rating it. As you do, the rating will be adjusted and will become more accurate for other members of our site.

If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support.

Thank you!

How to use ftime() to get system time in seconds and milliseconds

Tags: C
How do I get the computer time in seconds and milliseconds since the epoch?
I am using XCode and coding in C and running on Intel computers. I want to use ftime() but I can't work out how to use it!

I have tried to compile the code given as an answer to this question:
http://www.experts-exchange.com/Programming/Programming_Languages/Cplusplus/Q_20302889.html
but this won't compile:

I get 1 error and 1 warning:
error: storage size of 'timebuffer' isn't known
warning: unused variable 'timebuffer'

I really need to sort this out for my MIDI sequencer project. Any help would be great.

All I need is a way to get system time in seconds and milliseconds!
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
#include <stdio.h>
#include <sys/timeb.h>
#include <time.h>
 
int main( void )
{
   struct _timeb timebuffer;
   char *timeline;
 
   _ftime( &timebuffer );
   timeline = ctime( & ( timebuffer.time ) );
 
   printf( "The time is %.19s.%hu %s", timeline, timebuffer.millitm, &timeline[20] );
   return 0;
}
Start your free trial to view this solution
Question Stats
Zone: Apple
Question Asked By: 00hubblemp
Solution Provided By: evilrix
Participating Experts: 3
Solution Grade: A
Views: 58
Translate:
Loading Advertisement...
04.28.2008 at 04:31AM PDT, ID: 21452983

Rank: Guru

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
04.28.2008 at 04:32AM PDT, ID: 21452988

Rank: Guru

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
04.28.2008 at 04:39AM PDT, ID: 21453022

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
04.28.2008 at 04:42AM PDT, ID: 21453029

Rank: Sage

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
04.28.2008 at 04:42AM PDT, ID: 21453030

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
04.28.2008 at 04:46AM PDT, ID: 21453051

Rank: Guru

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
04.28.2008 at 04:48AM PDT, ID: 21453056

Rank: Guru

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
04.28.2008 at 04:49AM PDT, ID: 21453059

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
04.28.2008 at 04:50AM PDT, ID: 21453063

Rank: Sage

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
04.28.2008 at 04:53AM PDT, ID: 21453070

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
Loading Advertisement...
Microsoft
  • Internet Protocols
  • Applications
  • Development
  • OS
  • Hardware
  • Windows Security
Apple
  • Operating Systems
  • Hardware
  • Programming
  • Networking
  • Software
Internet
  • Search Engines
  • File Sharing
  • WebTrends / Stats
  • Spy / Ad Blockers
  • Web Browsers
  • New Net Users
  • Web Development
  • Chat / IM
  • Anti Spam
  • Web Servers
  • Anti-Virus
  • Email Clients
Gamers
  • Tips
  • Online / MMORPG
  • Puzzle
  • Emulators
  • Action / Adventure
  • Role Playing
  • Consoles
  • Game Programming
  • Strategy
  • Sports
  • Misc
  • Computer Games
Digital Living
  • Hardware
  • New Net Users
  • New Users
  • Software
  • Digital Music
  • Gaming World
  • Home Security
  • Apple
  • Networking Hardware
Virus & Spyware
  • Vulnerabilities
  • IDS
  • Encryption
  • Anti-Virus
  • Operating Systems Security
  • Software Firewalls
  • WebApplications
  • Cell Phones
  • Operating Systems
  • Internet
  • Hardware Firewalls
Hardware
  • Handhelds / PDAs
  • Displays / Monitors
  • Components
  • Networking Hardware
  • Peripherals
  • Laptops/Notebooks
  • Storage
  • Servers
  • Desktops
  • New Users
  • Misc
  • Apple
Software
  • System Utilities
  • Industry Specific
  • Network Management
  • Photos / Graphics
  • Page Layout
  • VMWare
  • Misc
  • Web Development
  • OS
  • CYGWIN
  • Voice Recognition
  • Message Queue
  • Quality Assurance
  • Security
  • Firewalls
  • MultiMedia Applications
  • Development
  • Database
  • Office / Productivity
  • Business Management
  • OS/2 Apps
  • Server Software
  • Internet / Email
ITPro
  • OS
  • Storage
  • Encryption
  • Operating Systems Security
  • Apple Hardware
  • Laptops & Notebooks
  • Servers
  • Networking Hardware
  • Peripherals
  • Devices
  • Displays / Monitors
  • WebTrends / Stats
  • Search Engines
  • Firewalls
  • WebApplications
  • IDS
  • Vulnerabilities
  • Email Clients
  • File Sharing
  • Spy / Ad Blockers
  • Web Browsers
  • Web Servers
  • Networking
  • Anti-Virus
  • Chat / IM
  • Anti Spam
Developer
  • Web Servers
  • Web Browsers
  • Game Programming
  • Dev Tools
  • Industry Specific
  • Office / Productivity
  • Database
  • CYGWIN
  • Web Development
  • Search Engines
  • File Sharing
  • WebTrends / Stats
  • Programming
  • Content Management
  • Application Servers
  • Protocols
Storage
  • Removable Backup Media
  • Storage Technology
  • Servers
  • Grid
  • Remote Access
  • Backup / Restore
  • Misc
  • Hard Drives
OS
  • Miscellaneous
  • Security
  • Development
  • Linux
  • VMWare
  • MainFrame OS
  • Unix
  • Apple
  • OS / 2
  • AS / 400
  • BeOS
  • Microsoft
  • VMS / OpenVMS
Database
  • Oracle
  • Miscellaneous
  • MySQL
  • Software
  • Sybase
  • Contact Management
  • PostgreSQL
  • Data Manipulation
  • Clarion
  • InterSystems Cache
  • Siebel
  • MUMPS
  • OLAP
  • SQLBase
  • SAS
  • GIS & GPS
  • 4GL
  • Berkeley DB
  • DB2
  • Informix
  • Interbase / Firebird
  • FoxPro
  • Reporting
  • LDAP
  • Filemaker Pro
  • MS SQL Server
  • dBase
  • MS Access
Security
  • Misc
  • Web Browsers
  • Software Firewalls
  • Operating Systems Security
  • File Sharing
  • Spy / Ad Blockers
  • Vulnerabilities
  • WebApplications
  • IDS
  • Anti-Virus
  • Encryption
  • Anti Spam
  • Email Clients
  • VPN
  • Chat / IM
Programming
  • Editors IDEs
  • Installation
  • Handhelds / PDAs
  • Multimedia Programming
  • System / Kernel
  • Algorithms
  • Game
  • Signal Processing
  • Project Management
  • Open Source
  • Database
  • Misc
  • Languages
  • Processor Platforms
  • Theory
Web Development
  • Scripting
  • Blogs
  • Web Servers
  • Software
  • Search Engines
  • Web Graphics
  • Images
  • Internet Marketing
  • Images and Photos
  • Components
  • Document Imaging
  • Web Languages/Standards
  • Illustration
  • WebApplications
  • Fonts
  • WebTrends / Stats
  • Authoring
  • Digital Camera Software
  • Miscellaneous
Networking
  • Protocols
  • Apple Networking
  • Network Management
  • Message Queue
  • Application Servers
  • Content Management
  • File Servers
  • Email Servers
  • Misc
  • Java Editors & IDEs
  • Wireless
  • Networking Hardware
  • Backup / Restore
  • System Utilities
  • ISPs & Hosting
  • Web Servers
  • Storage Technology
  • Removable Backup Media
  • Servers
  • Broadband
  • Grid
  • OS / 2
  • Novell Netware
  • Unix Networking
  • Windows Networking
  • Security
  • Telecommunications
  • Operating Systems
  • Linux Networking
Other
  • Community Advisor
  • Lounge
  • Community Support
  • New Net Users
  • Philosophy / Religion
  • Math / Science
  • Miscellaneous
  • URLs
  • Expert Lounge
  • Politics
  • Puzzles / Riddles
Community Support
  • Suggestions
  • New to EE
  • New Topics
  • Community Advisor
  • CleanUp
  • Announcements
  • General
  • Feedback
  • Input
  • EE Bugs
 
04.28.2008 at 04:31AM PDT, ID: 21452983

Rank: Guru

Remove leading underscore from timeb and ftime and it compiles.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
#include <stdio.h>
#include <sys/timeb.h>
#include <time.h>
 
int main( void )
{
   struct timeb timebuffer;
   char *timeline;
 
   ftime( &timebuffer );
   timeline = ctime( & ( timebuffer.time ) );
 
   printf( "The time is %.19s.%hu %s", timeline, timebuffer.millitm, &timeline[20] );
   return 0;
}
Open in New Window
Accepted Solution
 
04.28.2008 at 04:32AM PDT, ID: 21452988
 
04.28.2008 at 04:39AM PDT, ID: 21453022
Wow that was quick thanks evilrix!

Ok thats compiling and running fine now but I just want to print seconds and milliseconds. In the timeb structure millitm is an unsigned short and seconds is part of time_t.

How do you print these using printf? something like this?:

printf("Seconds:%d,Milliseconds:%d",time_t,timebuffer.millitm);

 
04.28.2008 at 04:42AM PDT, ID: 21453029

Rank: Sage

>> Remove leading underscore from timeb and ftime and it compiles.

That really depends on your compiler. My compiler (gcc) has the versions with the underscore too.

Check whether you have the <sys/timeb.h> header, and how it defines the struct needed for the ftime function.


Note that you shouldn't use the ftime function, but should use time instead (if seconds are enough).

        http://www.cplusplus.com/reference/clibrary/ctime/time.html

If you need micro-seconds, then take a look at gettimeofday :

        http://www.opengroup.org/onlinepubs/000095399/functions/gettimeofday.html
 
04.28.2008 at 04:42AM PDT, ID: 21453030
It is better to use clock() function instead. It returns the time in milliseconds.
Example:
  clock_t start, finish;
  double duration;

  start = clock();
  while( i-- )  ;
  finish = clock();
  duration = (double)(finish - start) / CLOCKS_PER_SEC;
CLOCKS_PER_SEC usually is 1000 it means 1 clock = 1 millisecond.

 
04.28.2008 at 04:46AM PDT, ID: 21453051

Rank: Guru

Since millitm is an unsigned short you probably want to use %u.
 
04.28.2008 at 04:48AM PDT, ID: 21453056

Rank: Guru

>> That really depends on your compiler. My compiler (gcc) has the versions with the underscore too.
True, but it was a suggestion to try not a mandate :)
 
04.28.2008 at 04:49AM PDT, ID: 21453059
The purpose for this is to be able to get the time when a MIDI event has happened and then write it to a file for playback.

First I'd have to get the time of the start of the program. When a MIDI event happens I get the time again and work out how long after the start that was and write it to a file along with the MIDI info (note number and velocity). Then when I play it back I get the start time and then play each note after the correct amount of time has passed.

How do I access and display the number of seconds?!

I can print the number of milliseconds like this:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
#include <stdio.h>
#include <sys/timeb.h>
#include <time.h>
 
int main( void )
{
	struct timeb timebuffer;
	
	ftime( &timebuffer );
	
	printf( "nMilliseconds:%hu\n",timebuffer.millitm);
	return 0;
}
Open in New Window
 
04.28.2008 at 04:50AM PDT, ID: 21453063

Rank: Sage

>> It is better to use clock() function instead. It returns the time in milliseconds.

Yes, but not since the epoch ;) So, it's not usable for 00hubblemp ...


Btw, the reason I said this earlier :

>> Note that you shouldn't use the ftime function

is because the ftime function is obsolete now.
 
04.28.2008 at 04:53AM PDT, ID: 21453070
How do I access the number of seconds?

timebuffer.time ?

What data type is it?

 
 
04.28.2008 at 04:58AM PDT, ID: 21453099
>> How do I access the number of seconds?

So, you're not considering what I said about ftime being obsolete ?
 
 
04.28.2008 at 04:59AM PDT, ID: 21453105
Solved with this code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
#include <stdio.h>
#include <sys/timeb.h>
#include <time.h>
 
int main( void )
{
	struct timeb timebuffer;
	
	ftime( &timebuffer );
	
	printf( "Seconds:%d\nMilliseconds:%hu\n",timebuffer.time, timebuffer.millitm);
	return 0;
}
Open in New Window
 
 
04.28.2008 at 05:03AM PDT, ID: 21453129
Even though ftime() is obsolete I am only doing this is a 1st year university assignment, this isn't going to be used by the public, just marked by my tutor. Everyone else decided to use usleep() in a while loop to work out  time but this way is far easier to use especially for polyphonic sequencing.
 
 
04.28.2008 at 05:13AM PDT, ID: 21453166
>> Even though ftime() is obsolete I am only doing this is a 1st year university assignment

Sure. But why not use the recommended gettimeofday function instead as I suggested earlier ? That way you get the same advantages of ftime, plus you're not using an obsolete function ...
 
 
 
20080236-EE-VQP-29 / EE_QW_2_20070628