Hello, this seems like it will be a helpful community. For my degree I need to take a basic C++ class and the only C++ class the offer that fits is an 8 week class, it really goes too fast. Anyways, I've been trying my hardest, but my brain really doesn't think in code, so I've probably made quite a few dumb errors that I can't see.

For this assignment the teacher wants us to write a program that will take an input of a sentence. Then he wants us to pass it to a function that uses pointers to strip the sentence of all spaces. It's really throwing me for a loop, I think I might be on the right track, although it's giving me several compile errors right now. Any help would be greatly appreciated!

#include <iostream>
using namespace std;

void print(char sentence2[],int size);//function to print sentence when done

void stripWhite(char point[],char sentence2[],int size);//uses pointers to strip sentence of spaces

int main ()
{//main
	
	char sentence1[1000];//first array to obtain sentence
	
	int size;//integer to decide how big new array should be
	
	cout << "Please enter a sentence and I will strip it of all spaces." << endl;
	
	cin >> sentence1;//input for first array
	
	for(int i=0;i<1000;i++)//for loop to find out size of array
	{//for
		if(sentence1[i] >= 'a' && sentence1[i] <= 'z' || sentence1[i] == ' ' || sentence1[i] == ',' || sentence1[i] == '.')
		{//if
			size++;
		}//if
	}//for
	
	char sentence2[size];//new array with exact size it should be
	
	for(int y;y<size;y++)//for loop to copy contents of first array to second
	{//for
		sentence2[y]=sentence1[y];
	}//for
	
	char point;//soon to be pointer
	
	for(int y;y<size;y++)//for loop to get point to become a pointer to second array
	{//for
		point[y]=&sentence2[y];
	}//for
	
	cout << endl;
	
	stripWhite(sentence2,point,size);
	
	return 0;
}//main

void print(char sentence2[],int size)//print function
{//void print
	
	for(int z;z<size;z++)
	{//for
		cout << sentence2[z];
	}//for
	
}//void

char stripWhite(char point[],char sentence2[],int size)//function to strip sentence of spaces
{//char stripWhite
	
	for(int y;y<size;y++)//for loop to only set non space characters to second array
	{//for
		if(point[y]!=' ')//if to decide if it is a space or not
		{//if
			sentence2[y]=*point[y];
		}//if
	}//for

	print(sentence2,size);//function call to print finished sentence
	
}//char

If this is what you mean.

BTW, where is the pointers.

And a rule of thumb, when you are using char *, instead of string,
you have a bug(In my opinion);

//str is the string passed. Key is the key that seperates the word
//does not use pointers.
void Strip(std::string str, char key)
{
    string Temp = "";

   for(int i = 0; i < str.size(); i++) //Run through the string
    {  
          if(str[i] == key) 
          {
                 // copy str from 0 to i into temp
          }
     }
   return Temp;
}

If this is what you mean.

BTW, where is the pointers.

And a rule of thumb, when you are using char *, instead of string,
you have a bug(In my opinion);

I thought that when I put "point[y]=&sentence2[y];" it was getting point to refer to the memory space instead of the value. And then in the stripWhite function "sentence2[y]=*point[y];" was referring to the value within the pointer. Is that not using pointers? I'm sorry to say I'm confused when it comes to pointers. How would I get my program to use pointers if it is not already?

And also, I am not against using strings instead of character arrays, it's just that my professor did not touch on strings much. Although I could use them in this program.

I thought that when I put "point[y]=&sentence2[y];" it was getting point to refer to the memory space instead of the value. And then in the stripWhite function "sentence2[y]=*point[y];" was referring to the value within the pointer. Is that not using pointers? I'm sorry to say I'm confused when it comes to pointers. How would I get my program to use pointers if it is not already?

And also, I am not against using strings instead of character arrays, it's just that my professor did not touch on strings much. Although I could use them in this program.

You are close on the "sentence2[y]=*point[y];" part but sentence2[y] must be a pointer. As you have it in your code it is just a plain old variable. The & does return the address of the object, in this case however you cant assign that address to a character. While the compiler might let you do it(if you assign an int to a char it will set the char to be whatever value the char is on the ascii table) I just wrote this little tutorial on pointers. See if it helps. Check the end to see about references.

http://mikectamu.blogspot.com/2009/10/pointers-explained.html

As far as the diff between strings and pointer arrays, in C there really is no difference, but in C++ string objects are handled a little differently. A character array can easily be used as a string. I would try to debug your program but since you aren't even using pointers and will have to rewrite it anyways it would seem to be a waste of time. Try rewriting it with the pointers in tact and then if you have problems post it up on here.

Hope that helps!!

This article has been dead for over six months. Start a new discussion instead.