sprintf expects a pointer to a buffer, not a pointer to nothing, so that's wrong.
You can't return a pointer to a local variable either, so that's also wrong. C strings are pointers, not objects, you can't expect them to allocate themselves. You should probably pass memory into the function for it to use.
You could start like this:
You'll need to add the thousand seperators yourself, printf can't do it reliably, and chop off extra whitespace from the front after sprintf is called, probably with memmove().
Hi,
The following command provides the usage in 1024-byte blocks
du -ks * | sort -n | echo "$1"
...
1588820 user10
2463140 user11
2464096 user12
5808484 user13
6387400 user14
.....
I am trying to produce an output of first coulmn by multiplying by 1024 so that the output should... (11 Replies)
Hello all,
I am being dumb with this and I know there is a simple solution.
I have a file with the follwing lines
bc stuff (more)...............123
bc stuffagain (moretoo)............0
bc stuffyetagain (morehere)......34
failed L3 thing..............1
failed this... (2 Replies)
I tried something like:
set test3 = (4.985e-10 5.130e-10 5.486e-10 6.023e-10 7.015e-10)
set test4 = (4.869e-10 5.010-10 5.363e-10 5.895e-10 6.887e-10)
set test5 = $test3 - $test4
but this doesn't seem to work. And then I tried:
@ test5 = $test3 - $test4
This doesn't seem to work... (8 Replies)
Hi,
I want to write a script that does something like this:
I have a file, in which in every line, there is a string of words, and followed by some space, a number.
Now, I want to identify the line, which has the largest startFace number (say m=8118), take that number and add it to the... (2 Replies)
Florida State University, Tallahassee, FL, USA, Dr. Whalley, COP4342 Unix Tools.
This program takes much of my previous assignment but adds the functionality of printing the concatenated line numbers found within the input.
Sample input from <> operator:
Hello World
This is hello
a sample... (2 Replies)
Hi
I have no experience in Unix so any help would be appreciated
I have the flowing text
235543
123
45654
199
225
578
45654
199
225
I need to find this sequence from A file
45654
199
225 (22 Replies)
I have a bunch of file numbers in the file 'test':
I'm trying the above command to change all the instances of "H" to "Na+" in the file testsds.pdb at the line numbers indicated in the file 'test'. I've tried the following and various similar alternatives but nothing is working:
cat test |... (3 Replies)
I want to sort my data first by the 2nd field then by the first field.
I can't use sort -V because I don't have gnu sort and cannot install one.
How do I go about this?
Input:
G456 KT1 34
K234 KT10 45
L2 KT2 26
H5 LAF2 28
F3 LAF2 36
Output:
G456 KT1 34
L2 KT2 26
K234 KT10 45
F3... (14 Replies)
Hello Everyone ,
Iam a newbie to shell programming and iam reaching out if anyone can help in this :-
I have two files
1) Insert.txt
2) partition_list.txt
insert.txt looks like this :-
insert into emp1 partition (partition_name)
(a1,
b2,
c4,
s6,
d8)
select
a1,
b2,
c4, (2 Replies)
Discussion started by: nubie2linux
2 Replies
LEARN ABOUT SUNOS
qeconvert
econvert(3C) Standard C Library Functions econvert(3C)NAME
econvert, fconvert, gconvert, seconvert, sfconvert, sgconvert, qeconvert, qfconvert, qgconvert - output conversion
SYNOPSIS
#include <floatingpoint.h>
char *econvert(double value, int ndigit, int *decpt, int *sign, char *buf);
char *fconvert(double value, int ndigit, int *decpt, int *sign, char *buf);
char *gconvert(double value, int ndigit, int trailing, char *buf);
char *seconvert(single *value, int ndigit, int *decpt, int *sign, char *buf);
char *sfconvert(single *value, int ndigit, int *decpt, int *sign, char *buf);
char *sgconvert(single *value, int ndigit, int trailing, char *buf);
char *qeconvert(quadruple *value, int ndigit, int *decpt, int *sign, char *buf);
char *qfconvert(quadruple *value, int ndigit, int *decpt, int *sign, char *buf);
char *qgconvert(quadruple *value, int ndigit, int trailing, char *buf);
DESCRIPTION
The econvert() function converts the value to a null-terminated string of ndigit ASCII digits in buf and returns a pointer to buf. buf
should contain at least ndigit+1 characters. The position of the decimal point relative to the beginning of the string is stored indirectly
through decpt. Thus buf == "314" and *decpt == 1 corresponds to the numerical value 3.14, while buf == "314" and *decpt == -1 corresponds
to the numerical value .0314. If the sign of the result is negative, the word pointed to by sign is nonzero; otherwise it is zero. The
least significant digit is rounded.
The fconvert() function works much like econvert(), except that the correct digit has been rounded as if for sprintf(%w.nf) output with
n=ndigit digits to the right of the decimal point. ndigit can be negative to indicate rounding to the left of the decimal point. The return
value is a pointer to buf. buf should contain at least 310+max(0,ndigit) characters to accomodate any double-precision value.
The gconvert() function converts the value to a null-terminated ASCII string in buf and returns a pointer to buf. It produces ndigit sig-
nificant digits in fixed-decimal format, like sprintf(%w.nf), if possible, and otherwise in floating-decimal format, like sprintf(%w.ne);
in either case buf is ready for printing, with sign and exponent. The result corresponds to that obtained by
(void) sprintf(buf,``%w.ng'',value) ;
If trailing = 0, trailing zeros and a trailing point are suppressed, as in sprintf(%g). If trailing != 0, trailing zeros and a trailing
point are retained, as in sprintf(%#g).
The seconvert(), sfconvert(), and sgconvert() functions are single-precision versions of these functions, and are more efficient than the
corresponding double-precision versions. A pointer rather than the value itself is passed to avoid C's usual conversion of single-precision
arguments to double.
The qeconvert(), qfconvert(), and qgconvert() functions are quadruple-precision versions of these functions. The qfconvert() function can
overflow the decimal_record field ds if value is too large. In that case, buf[0] is set to zero.
The ecvt(), fcvt() and gcvt() functions are versions of econvert(), fconvert(), and gconvert(), respectively, that are documented on the
ecvt(3C) manual page. They constitute the default implementation of these functions and conform to the X/Open CAE Specification, System
Interfaces and Headers, Issue 4, Version 2.
USAGE
IEEE Infinities and NaNs are treated similarly by these functions. ``NaN'' is returned for NaN, and ``Inf'' or ``Infinity'' for Infinity.
The longer form is produced when ndigit >= 8.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|MT-Level |MT-Safe |
+-----------------------------+-----------------------------+
SEE ALSO ecvt(3C),sprintf(3C), attributes(5)SunOS 5.10 3 May 1999 econvert(3C)