Thread: [c]Pointers
View Single Post
Old 12-20-2006, 09:53 PM   #4 (permalink)
Rekna
Junkie
 
Quote:
Originally Posted by zero2
Actually it looks like the formatting in my previous post where, what is acceptable values got messed up, but there are actually spaces in example b, and c, but it's hard to tell.

I need to store the values into a array/pointer, then store the values from the first array back into another array, with the condition that the values are binary digits.

So lets say a user enters: space, space, 1, 0, 1, 1, 0, 0

'', '', '1', '0', '1', '1', '0', '0'

The first array would grab the data such as:

cAry[0] = ''
cAry[1] = ''
cAry[2] = '1'
cAry[3] = '1'
cAry[4] = '0'
cAry[5] = '0'
cAry[6] = '\n'

The second character array, needs to grab only binary numbers:

cAryBinary[0] = '1'
cAryBinary[1] = '1'
cAryBinary[2] = '0'
cAryBinary[3] = '1'
cAryBinary[4] = '0'
cAryBinary[5] = '\n'

So far this is what I have, it's far from being done, but one problem I've come across, is how to have the program ask: Enter a binary string to continue or q to quit, and only when the q is entered does the program stop asking that question.

I was thinking of doing a while loop, that asks:

while (*(cPtr + 0) !=q )
do ...
but that doesn't seem to work.



Code:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	int iSize;
	char *cPtr;
	

	printf("\nEnter estimate size of string ");
	scanf("%d", &iSize);
	getchar();//clears input buffer
	cPtr = (char * ) malloc (iSize * sizeof(char));
	printf("Enter a binary string to continue or q to quit:");
	gets(cPtr);

	if ( *(cPtr+ 0) == 'q' )
	{
		printf("Thank You!\n");
	}
	else if (*(cPtr + 0) == '0' || *(cPtr + 0) == '1' )
	{
		printf("The given string is converted to %s\n", cPtr);
	}
	else
	{
		printf("The given string is not convertible!\n");
	}
	return 0;

}
There are lots of ways to do that but yours is close to right. You don't need the +0, and i'd avoid using the * operator. Instead do something like

//input cptr

while(cptr[0]!='q' || cptr[0]!='Q')
{
//process string

//input cptr
}


Also just an fyi. the command break; will exit the innermost loop and the command exit(int retval); will quit the program and return the value retval to the calling program. These can be used for termination.

Sorry for not giving you lots of code but I think it's important that you learn the stuff yourself by trying things out.
Rekna is offline  
 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62