delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/03/28/16:00:35

Message-ID: <36FE8749.6CC4C5AC@jps.net>
Date: Sun, 28 Mar 1999 11:47:21 -0800
From: Dennis Yelle <dennis51 AT jps DOT net>
X-Mailer: Mozilla 4.51 [en] (Win95; U)
X-Accept-Language: en
MIME-Version: 1.0
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Converting between varable types
References: <7dlh6c$4b3$1 AT nnrp1 DOT dejanews DOT com>
NNTP-Posting-Host: 209.239.193.110
X-NNTP-Posting-Host: 209.239.193.110
X-Trace: 28 Mar 1999 20:08:51 -0800, 209.239.193.110
Lines: 70
X-NNTP-Posting-Host: 209.63.224.240
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

ryan_brown AT my-dejanews DOT com wrote:
> 
> How do you convert data between variables of different types?  I need to
> convert the data in a float variable to a char variable.  In pascal you could
> just use funcitons like FloatToStr() however in c I can't find anything.  I
> have heard of casting but I can't get it to work and there isn't any
> information on it anywhere on the internet as far as I can tell.  Could
> someone point me to some source code or a function that I could use for
> converting this stuff? thanks in advance. 

There are lots of ways to do it,
but no one way is best in all cases.

Here is one way:

---------------------------- cut here ------------------------------

/* The code below was written by Dennis Yelle on March 28, 1999.
   Use it any way you like.
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *d2s( double d)
{
	char *out;
	static char buf[400];    /* 400 is probably big enough */
	
	sprintf( buf, "%g", d);  /* you might want to try %f instead of %g here
*/
	out = strdup( buf);
	if ( ! out ) {
		fprintf( stderr, "Sorry, not enough memory.\n");
		exit(9);
	}
	return out;
}

int main( int argc, char **argv)
{
	double d;
	float  f;
	int i;
	char *p;
	if ( argc < 2 ) {
		d = 9;
		for( i=0; i<310; i++) {
			d *= 10;
			p = d2s( d);
			printf( "i = %d, d = %s, ", i, p);
			free(p);
			f = d;
			p = d2s( f);
			printf( "f = %s\n", p);
			free(p);
		}
	} else {
		for( i=1; i<argc; i++) {
			d = atof( argv[i]);
			p = d2s( d);
			printf( "%s ", p);
			free(p);
		}
		printf( "\n");
	}
	return 0;
}
---------------------------- cut here --------------------------------

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019