how many ways to convert a integer to a string

V

Vladimir S. Oka

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?
 
P

pete

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);
}
 
W

WaterWalk

(e-mail address 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.
 
C

CBFalconer

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
"Reply" at the bottom of the article headers." - Keith Thompson
More details at: <http://cfaj.freeshell.org/google/>
Also see <http://www.safalra.com/special/googlegroupsreply/>
 
F

Fred Kleinschmidt

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.
 
M

Micah Cowan

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;
}
 
O

Old Wolf

CBFalconer said:
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.
 
C

CBFalconer

Old said:
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
"Reply" at the bottom of the article headers." - Keith Thompson
More details at: <http://cfaj.freeshell.org/google/>
Also see <http://www.safalra.com/special/googlegroupsreply/>
 
A

apple.davinci

Fred Kleinschmidt 写é“:
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.
it is not my homework.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,176
Messages
2,570,949
Members
47,500
Latest member
ArianneJsb

Latest Threads

Top