Islam Hegazy wrote:
Hi all
I created a function that returns a set of records. This function returns an
integer and a float as the record fields. I have a problem in this function, it
truncates the output. e.g. 1342 is displayed as 134, 456.46 is displayed as
456. In other words, it displays the first 3 digits only of a number, whether
it is integer of float. I traced the function and the results are computed
correctly. I use PostgreSQL 8.2.4. Following is a piece of my code.
output[0] = (char*)palloc(sizeof(int)); //allocate space for a string that
accepts an integer
output[1] = (char*)palloc(sizeof(double)); //allocate space for a string that
accepts an integer
I don't really do C any more, but I don't think these do what you want.
I think here you're allocating space for an integer/double, not for the
string representation of them (i.e. 4/8 bytes). I'm surprised you're not
just getting a crash.
snprintf(output[0], sizeof(int), "%d", counter);
snprintf(output[1], sizeof(float), "%.5f", result);
--
Richard Huxton
Archonet Ltd
---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly