Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > how many ways to convert a integer to a string

Reply
Thread Tools

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;

 
Reply With Quote
 
 
 
 
Vladimir S. Oka
Guest
Posts: n/a
 
      03-09-2006

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?

 
Reply With Quote
 
 
 
 
pete
Guest
Posts: n/a
 
      03-09-2006
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
 
Reply With Quote
 
WaterWalk
Guest
Posts: n/a
 
      03-09-2006

写道:

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

 
Reply With Quote
 
CBFalconer
Guest
Posts: n/a
 
      03-09-2006
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
"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/>


 
Reply With Quote
 
Fred Kleinschmidt
Guest
Posts: n/a
 
      03-09-2006

<> wrote in message
news: 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


 
Reply With Quote
 
Micah Cowan
Guest
Posts: n/a
 
      03-09-2006
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;
}
 
Reply With Quote
 
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.

 
Reply With Quote
 
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

 
Reply With Quote
 
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
"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/>


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: How include a large array? Edward A. Falk C Programming 1 04-04-2013 08:07 PM
Split string (then) Convert string into Integer news ASP General 2 05-26-2010 11:58 AM
Change a string to an integer, report an error if the string does not represent an integer? Randy Kramer Ruby 12 10-25-2007 09:56 PM
convert scientific integer to normal integer les ander Python 4 10-05-2004 04:26 PM
good ways to convert string into time Hank Python 5 11-18-2003 11:44 PM



Advertisments