Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C Programming (http://www.velocityreviews.com/forums/f42-c-programming.html)
-   -   how many ways to convert a integer to a string (http://www.velocityreviews.com/forums/t441704-how-many-ways-to-convert-a-integer-to-a-string.html)

 apple.davinci@gmail.com 03-09-2006 09:59 AM

how many ways to convert a integer to a string

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

 Vladimir S. Oka 03-09-2006 10:18 AM

Re: how many ways to convert a integer to a string

apple.davinci@gmail.com 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 03-09-2006 10:20 AM

Re: how many ways to convert a integer to a string

apple.davinci@gmail.com 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 03-09-2006 11:25 AM

Re: how many ways to convert a integer to a string

apple.davinci@gmail.com 写道：

> 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 03-09-2006 01:55 PM

Re: how many ways to convert a integer to a string

apple.davinci@gmail.com 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 03-09-2006 04:03 PM

Re: how many ways to convert a integer to a string

<apple.davinci@gmail.com> wrote in message
> 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 03-09-2006 08:48 PM

Re: how many ways to convert a integer to a string

apple.davinci@gmail.com 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 03-09-2006 10:37 PM

Re: how many ways to convert a integer to a string

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 03-09-2006 10:39 PM

Re: how many ways to convert a integer to a string

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

Tsk tsk, Old Wolf is reading-impaired

 CBFalconer 03-10-2006 01:20 AM

Re: how many ways to convert a integer to a string

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

All times are GMT. The time now is 11:44 PM.