RSS Forums RSS
Please support our C advertiser: Programming Forums
Views: 34294 | Replies: 8
Reply
Join Date: May 2004
Posts: 1
Reputation: Merrissey is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 0
Merrissey Merrissey is offline Offline
Newbie Poster

String to integer to ascii

  #1  
May 13th, 2004
Lets say I have the following as a string:

097102099105110

What I want to do is find the ascii character represented by every set of 3 digits. So the ascii character of 97, then 102, 99, 105 and then 110.

Could anybody point me in the right direction here?
AddThis Social Bookmark Button
Reply With Quote  
Join Date: Apr 2004
Posts: 3,766
Reputation: Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light 
Rep Power: 17
Solved Threads: 147
Colleague
Dave Sinkula's Avatar
Dave Sinkula Dave Sinkula is offline Offline
long time no c

Re: String to integer to ascii

  #2  
May 13th, 2004
One way:
#include <stdio.h>

int main(void)
{
   const char text[] = "097102099105110";
   int i, value[5];
   if ( sscanf(text, "%3d%3d%3d%3d%3d", &value[0],
			   &value[1], &value[2], &value[3], &value[4]) == 5 )
   {
	  for ( i = 0; i < 5; ++i )
	  {
		 printf("value[%d] = %d\n", i, value[i]);
	  }
   }
   return 0;
}

/* my output
value[0] = 97
value[1] = 102
value[2] = 99
value[3] = 105
value[4] = 110
*/
Reply With Quote  
Join Date: Apr 2004
Posts: 3,766
Reputation: Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light 
Rep Power: 17
Solved Threads: 147
Colleague
Dave Sinkula's Avatar
Dave Sinkula Dave Sinkula is offline Offline
long time no c

Re: String to integer to ascii

  #3  
May 13th, 2004
Another way:
#include <stdio.h>

int main(void)
{
   const char text[] = "097102099105110", *ptr = text;
   int i, value;
   while ( sscanf(ptr, "%3d%n", &value, &i) == 1 )
   {
	  printf("value = %d\n", value);
	  ptr += i;
   }
   return 0;
}

/* my output
value = 97
value = 102
value = 99
value = 105
value = 110
*/
Reply With Quote  
Join Date: Apr 2004
Posts: 3,766
Reputation: Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light 
Rep Power: 17
Solved Threads: 147
Colleague
Dave Sinkula's Avatar
Dave Sinkula Dave Sinkula is offline Offline
long time no c

Re: String to integer to ascii

  #4  
May 13th, 2004
Sorry for multiple posts -- I just now noticed the ASCII part.

Assuming your system is ASCII, it's quite easy to convert the integer value to ASCII (do nothing).
#include <stdio.h>
 
int main(void)
{
   const char text[] = "097102099105110", *ptr = text;
   int i, value;
   while ( sscanf(ptr, "%3d%n", &value, &i) == 1 )
   {
   printf("value = %3d = '%c'\n", value, value);
   ptr += i;
   }
   return 0;
}
 
/* my output
value =  97 = 'a'
value = 102 = 'f'
value =  99 = 'c'
value = 105 = 'i'
value = 110 = 'n'
*/
Reply With Quote  
Join Date: May 2004
Posts: 15
Reputation: tlee is an unknown quantity at this point 
Rep Power: 5
Solved Threads: 0
tlee tlee is offline Offline
Newbie Poster

Re: String to integer to ascii

  #5  
May 13th, 2004
Hi Dave,
What is the %n used for in sscanf(ptr, "%3d%n", &value, &i)? Thanks.
Reply With Quote  
Join Date: Apr 2004
Posts: 3,766
Reputation: Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light 
Rep Power: 17
Solved Threads: 147
Colleague
Dave Sinkula's Avatar
Dave Sinkula Dave Sinkula is offline Offline
long time no c

Re: String to integer to ascii

  #6  
May 13th, 2004
>What is the %n used for in sscanf(ptr, "%3d%n", &value, &i)?
No input is consumed. The corresponding argument shall be a pointer to signed integer into which is to be written the number of characters read from the input stream so far by this call to the fscanf function. Execution of a %n directive does not increment the assignment count returned at the completion of execution of the fscanf function. No argument is converted, but one is consumed. If the conversion specification includes an assignment suppressing character or a field width, the behavior is undefined.
Reply With Quote  
Join Date: May 2004
Posts: 253
Reputation: FireNet will become famous soon enough FireNet will become famous soon enough 
Rep Power: 6
Solved Threads: 6
FireNet's Avatar
FireNet FireNet is offline Offline
Posting Whiz in Training

Re: String to integer to ascii

  #7  
May 24th, 2004
char chr = 'a';

cout<<chr; //will show the char
cout<<(int)chr; //will show the ancii code

chr = 232;

cout<<chr; //will show what ever 232 repesents
cout<<(int)chr; //will show the ancii code i.e 232
See what you can, remember what you need

Fourzon | Earn via Coding
Reply With Quote  
Join Date: Jun 2005
Posts: 1
Reputation: Msnart is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 0
Msnart Msnart is offline Offline
Newbie Poster

Re: String to integer to ascii

  #8  
Jun 14th, 2005
Originally Posted by FireNet
char chr = 'a';

cout<<chr; //will show the char
cout<<(int)chr; //will show the ancii code

chr = 232;

cout<<chr; //will show what ever 232 repesents
cout<<(int)chr; //will show the ancii code i.e 232

So if i had a character array (string):

tempChar[10] = '44\0abcdefg';

How do I convert that string into the integer 44? I've tried:

anInt = (int)tempChar;

hoping that it would take the string up to the null character \0 and turn it into an int, but no dice. Any suggestions?
Reply With Quote  
Join Date: Apr 2004
Posts: 3,766
Reputation: Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light 
Rep Power: 17
Solved Threads: 147
Colleague
Dave Sinkula's Avatar
Dave Sinkula Dave Sinkula is offline Offline
long time no c

Re: String to integer to ascii

  #9  
Jun 14th, 2005
Don't cast, use atoi.
High Plains Blogger #plains #lounge ## I, for one, welcome our new socialist overlords.
"Capitalism is the unequal distribution of wealth. Socialism is the equal distribution of poverty."
Reply With Quote  
Reply

Only community members can participate in forum threads. You must register or log in to contribute.

Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)

 

Thread Tools Display Modes
Forums | Blogs | Tutorials | Code Snippets | Whitepapers | RSS Feeds | Advertising
All times are GMT -4. The time now is 11:48 am.
Newsletter Archive - Sitemap - Privacy Statement - Acceptable Use Policy - Contact Us
Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC