C Board  

Go Back   C Board > General Programming Boards > FAQ Board

 
 
LinkBack Thread Tools Display Modes
Old 10-19-2001, 04:35 PM   #1
Unregistered
Guest
 
Posts: n/a
Arrow atoi does it work like this

Hi guys,
Does atoi work like this: it scans an array element by element 0=49 1=50 2=51 converts these ascii values 49 50 and 51 into there digit equivalents and add each one to an identifier/varriable.

Thanks learner(wanting to be a master).
 
Old 10-19-2001, 04:48 PM   #2
+++ OK NO CARRIER
 
quzah's Avatar
 
Join Date: Oct 2001
Posts: 10,262
No. It doesn't.

x = atoi( "32" );
printf("%d", x ); /* this prints 32 */

atoi( ) takes a string of numbers and translatest it directly into the integer value of the string, as shown above.

Quzah.
quzah is offline  
Old 10-19-2001, 09:12 PM   #3
Registered User
 
Join Date: Sep 2001
Posts: 752
Okay, let's say this is the program...
Code:
#include <stdlib.h>
main ()
{
 char a[4];
 int i;
 
 a = {49, 50, 51, 0};
 // 49 = '1', 50 = '2', 51 = '3', 0 = '\0'
 // So a is the string "123"
 i = atoi (a)
 // Now i is the integer value 123
 return;
}
The 0 is very important, as atoi is meant for reading a 0 terminated character string. That is to say, if instead I used a[3] = {49, 50, 51}, then atoi(a) would have just kept reading for integer values in the memory past a[3] because it hadn't yet encounted the string terminator... '\0'.
QuestionC is offline  
Old 10-20-2001, 09:53 AM   #4
Unregistered
Guest
 
Posts: n/a
Quote:
Originally posted by QuestionC
Okay, let's say this is the program...
Code:
#include <stdlib.h>
main ()
{
 char a[4];
 int i;
 
 a = {49, 50, 51, 0};
 // 49 = '1', 50 = '2', 51 = '3', 0 = '\0'
 // So a is the string "123"
 i = atoi (a)
 // Now i is the integer value 123
 return;
}
The 0 is very important, as atoi is meant for reading a 0 terminated character string. That is to say, if instead I used a[3] = {49, 50, 51}, then atoi(a) would have just kept reading for integer values in the memory past a[3] because it hadn't yet encounted the string terminator... '\0'.
a = {49, .....}???
you try to compile this?
probably not!
any way this is not the meaning of atoi(ascii to integer),

void main(void)
{
char *a;

a = "49";
printf("%d",atoi(a));
}


output:

49 press any key to continue...
 
Old 10-20-2001, 03:47 PM   #5
Registered User
 
Join Date: Sep 2001
Posts: 752
Sorry, my post was intended to just get the spirit of atoi across as code, not as a program. Here's the code, fixed up to compile, and producting some output.
Code:
#include <stdlib.h>
main ()
{
 char a[4] = {49, 50, 51, 0};
 int i;
 
 printf ("a represented as a string is... %s\n", a);
 printf ("a represented as an int is... %d\n", a);

 // 49 = '1', 50 = '2', 51 = '3', 0 = '\0'
 // So a is the string "123"

 i = atoi (a);
 printf ("atoi(a) as an int is... %d\n", i);
 printf ("atoi(a) as a string is... %s\n", i);

 // Now i is the integer value 123
 return;
}
Looking at your code... well, here's the thing...
Code:
char *a = "49";
is equivalent (kinda) to
Code:
a[3] = {52, 57, 0};
and that's pretty much the difference between my code and yours. 52 is the ASCII value for '4', 57 is the ASCII value for '9', and 0 is the string terminator. Similarly
Code:
char a[4] = {49, 50, 51, 0};
is the same as
Code:
char * a = "123"


*Note to self... use atoi and pointer arithmatic to perform divisions in next ofuscated code contest*
QuestionC is offline  
Old 10-20-2001, 10:13 PM   #6
+++ OK NO CARRIER
 
quzah's Avatar
 
Join Date: Oct 2001
Posts: 10,262
> return;

Just to nit pick...you forgot to return a value!

Quzah.
quzah is offline  
 

Thread Tools
Display Modes

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Having trouble with atoi NewbGuy C Programming 2 05-22-2009 11:55 PM
Redirect FAQ... Queatrix General Discussions 21 05-21-2007 04:48 PM
If you are employed as a programmer, please look Flood Fighter A Brief History of Cprogramming.com 10 09-28-2004 02:35 AM
FAQ Check/Lock RoD A Brief History of Cprogramming.com 2 10-15-2002 11:21 AM


All times are GMT -6. The time now is 09:25 AM.


Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.0 RC2

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22