Velocity Reviews > how many ways to convert a integer to a string

# how many ways to convert a integer to a string

apple.davinci@gmail.com
Guest
Posts: n/a

 03-09-2006
as many as possible.
int i = 333;
char* s;
how to convert i to s;

Guest
Posts: n/a

 03-09-2006

http://www.velocityreviews.com/forums/(E-Mail Removed) wrote:
> as many as possible.
> int i = 333;
> char* s;
> how to convert i to s;

Your question is not clear enough (and should have been repreated in
the body of the post as well). Do you want to use standard functions
(see `sprintf`), or are you looking for different /algorithmic/ ways?

pete
Guest
Posts: n/a

 03-09-2006
(E-Mail Removed) wrote:
>
> as many as possible.
> int i = 333;
> char* s;
> how to convert i to s;

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

s = malloc((size_t)((sizeof(int) * CHAR_BIT - 1) / 3.3) + 3);
if (s != NULL) {
sprintf(s, "%d", i);
}

--
pete

WaterWalk
Guest
Posts: n/a

 03-09-2006

(E-Mail Removed) 写道：

> as many as possible.
> int i = 333;
> char* s;
> how to convert i to s;

Another way is to get every digit from the integer and then convert the
difit to it's corresponding char. Just continue to divide the integer
by 10 until the result is 0. The remainder of each division is the
leftmost digit of the integer.

CBFalconer
Guest
Posts: n/a

 03-09-2006
(E-Mail Removed) wrote:
>
> as many as possible.
> int i = 333;
> char* s;
> how to convert i to s;

You could write some code, or you could use the standard library
that comes with most C systems (all hosted C systems). It's up to
you. If you write the code you get to define 'convert'. One
possibility follows:

void convert(int i) {

if (i < 0) putchar('-');
else i = -i;
while (i++ < 0) putchar('1');
putchar('\n');
}

Note that I took advantage of the ability to define. Some would
consider this a base 1 representation of i. By using a file I
avoided the necessity of providing a possibly very large string
buffer.

--
"If you want to post a followup via groups.google.com, don't use
the broken "Reply" link at the bottom of the article. Click on
"show options" at the top of the article, then click on the

Fred Kleinschmidt
Guest
Posts: n/a

 03-09-2006

<(E-Mail Removed)> wrote in message
news:(E-Mail Removed) oups.com...
> as many as possible.
> int i = 333;
> char* s;
> how to convert i to s;
>

I can come up with as many different ways as you would like. Some are not
very efficient, some are.

For example, I can convert it to a string in base 2, base 3, ... base 12,
base 60, whatever.
I can just use sprintf(), or keep dividing by 10 (for base 10), or take the
log and do some fancy, stupid manipulation and finally get a string
representation.

You will have to be more specific about what you want. Or what your
professor wants.
--
Fred L. Kleinschmidt
Boeing Associate Technical Fellow
Technical Architect, Software Reuse Project

Micah Cowan
Guest
Posts: n/a

 03-09-2006
(E-Mail Removed) writes:

> as many as possible.
> int i = 333;
> char* s;
> how to convert i to s;

Here's another one (untested, but should work great).

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

int main(void)
{
int i = 333
int size;
int xcode;
char *s;
const char *format = "%d";

/* Get the size we need. */
size = snprintf(NULL, 0, format, i);
s = malloc(size);
if (s == NULL) {
fputs("Couldn't allocate space for the string. Fancy that!\n",stderr);
xcode = EXIT_FAILURE;
} else {
snprintf(s, size, format, i);
printf("Here you go: %s\n", s);
xcode = EXIT_SUCCESS;
}

return xcode;
}

Old Wolf
Guest
Posts: n/a

 03-09-2006
CBFalconer wrote:
>
> void convert(int i) {
>
> if (i < 0) putchar('-');
> else i = -i;
> while (i++ < 0) putchar('1');
> putchar('\n');
> }

Tsk tsk, UB if i == INT_MIN and INT_MIN < -INT_MAX.

Old Wolf
Guest
Posts: n/a

 03-09-2006
Old Wolf wrote:
> Tsk tsk, UB if i == INT_MIN and INT_MIN < -INT_MAX.

Tsk tsk, Old Wolf is reading-impaired

CBFalconer
Guest
Posts: n/a

 03-10-2006
Old Wolf wrote:
> CBFalconer wrote:
>>
>> void convert(int i) {
>>
>> if (i < 0) putchar('-');
>> else i = -i;
>> while (i++ < 0) putchar('1');
>> putchar('\n');
>> }

>
> Tsk tsk, UB if i == INT_MIN and INT_MIN < -INT_MAX.

Look again. That can't happen, which is why I wrote it as I did.
It is entirely possible that -INT_MIN is larger than INT_MAX, but
not the reverse.

--
"If you want to post a followup via groups.google.com, don't use
the broken "Reply" link at the bottom of the article. Click on
"show options" at the top of the article, then click on the