473,386 Members | 1,736 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,386 software developers and data experts.

would i have to copy pointers? (urgent?)

Hi,
I have a project where i must use pointers and write a function that strips all the white spacebar spaces out of an array. I also have to count how many white spaces i have. Well i figured out how to count all the white spaces i just don't know how to strip all the white spaces out of the sentence entered. I asked the proffessor and he said one way of doing it would be to crreate another array and copy it to the new array and when it hits a white space not to copy it in to the new array. I understand that,but i don't know how to use pointers to do it.so far i
have this

void stripWhite(char *str)
{
char str2[100];

char*p;
char *t;

}

any help would be great i need it asap.
Sep 27 '06 #1
9 2500
Banfa
9,065 Expert Mod 8TB
You need to pointers,

1 to point at the current character to read from the source string.

1 to point at the current character to write to in the destination string.

Initally both pointers will point to the start of their respective arrays

then

Expand|Select|Wrap|Line Numbers
  1. FOREACH Character in the Source String
  2.     IF it is not a SPACE
  3.         Copy it to the destination string
  4.         Increment the destination string pointer
  5.     ENDIF
  6.     Increment the source string pointer
  7. ENDFOR
  8.  
Don't forget to write a terminator to the destination string.
Sep 27 '06 #2
vermarajeev
180 100+
Hi,
I have a project where i must use pointers and write a function that strips all the white spacebar spaces out of an array. I also have to count how many white spaces i have. Well i figured out how to count all the white spaces i just don't know how to strip all the white spaces out of the sentence entered. I asked the proffessor and he said one way of doing it would be to crreate another array and copy it to the new array and when it hits a white space not to copy it in to the new array. I understand that,but i don't know how to use pointers to do it.so far i
have this

void stripWhite(char *str)
{
char str2[100];

char*p;
char *t;

}

any help would be great i need it asap.
Expand|Select|Wrap|Line Numbers
  1. void stripWhite(char* str)
  2. {
  3.     int j = 0;
  4.     for(int i=0; str[i] != '\0'; ++i)
  5.      {
  6.           if(str[i] != ' ')
  7.             str[j++] = str[i];     
  8.      }
  9.      str[j] = '\0';
  10.      cout<<str<<endl;
  11. }   
Sep 27 '06 #3
Expand|Select|Wrap|Line Numbers
  1. void stripWhite(char* str)
  2. {
  3.     int j = 0;
  4.     for(int i=0; str[i] != '\0'; ++i)
  5.      {
  6.           if(str[i] != ' ')
  7.             str[j++] = str[i];     
  8.      }
  9.      str[j] = '\0';
  10.      cout<<str<<endl;
  11. }   
That works but i have to use pointers.
Sep 27 '06 #4
Banfa
9,065 Expert Mod 8TB
That works but i have to use pointers.
Adapt it

remember that

array[4]

is equivilent to

*(array+4)
Sep 27 '06 #5
Adapt it

remember that

array[4]

is equivilent to

*(array+4)
i am having a hard time understanding how to increment both pointers. I understand that they both start at the same point in there arrays, but i don't understand how to increment them to go to the next character in the array on the first array, but then tell the second array to skip the space.
that is the hardest thing i am dealing with so far i have this now.


void stripWhite(char* str)
{
char str2[100];
char *p;
p=str;
char*t;
t=str2;


{
if(*(p)!=' ')

{
t=p;

}



}
cout<<t<<endl;

}
Sep 27 '06 #6
D_C
293 100+
What's so difficult? Always increment the pointer to the string with spaces. If you come upon a space, increment the number of spaces encountered. Otherwise, increment the pointer to the string without spaces.

If you are doing the operation in place, for some reason, then the number of spaces encountered is (ptr_with_spaces - ptr_no_spaces).
Sep 28 '06 #7
ltgbau
41
answer here:

void stripWhite(char* str)
{
char str2[100]="";
char *p;
p=str;
char*t;
t=str2;

int len=strlen(str);
int i=0;
int j=0;
while(i<len)
{
if(*(p+i)!=' ')
{
*(t+j)=*(p+i);
j++;
}
i++;
}
cout<<t<<endl;
}
Sep 28 '06 #8
vermarajeev
180 100+
i am having a hard time understanding how to increment both pointers. I understand that they both start at the same point in there arrays, but i don't understand how to increment them to go to the next character in the array on the first array, but then tell the second array to skip the space.
that is the hardest thing i am dealing with so far i have this now.


void stripWhite(char* str)
{
char str2[100];
char *p;
p=str;
char*t;
t=str2;


{
if(*(p)!=' ')

{
t=p;

}



}
cout<<t<<endl;

}
Hi, I think according to your question it just tells me to use pointers and as what I have posted there is a pointer too (i.e char* str). Also as Banfa said
arr[4] is equivalent to *(arr+4) that too is a pointer. So dont get panic about pointers. Use pointers whenever required. In your question it is never said that you have to use two pointers one for source and the other for destination.....I just tells me to use pointers....

Try something which is simple and the best solution.
Thankx
Sep 28 '06 #9
Hi, I think according to your question it just tells me to use pointers and as what I have posted there is a pointer too (i.e char* str). Also as Banfa said
arr[4] is equivalent to *(arr+4) that too is a pointer. So dont get panic about pointers. Use pointers whenever required. In your question it is never said that you have to use two pointers one for source and the other for destination.....I just tells me to use pointers....

Try something which is simple and the best solution.
Thankx
sorry for not stating right. And thanks for the help.
Sep 28 '06 #10

Sign in to post your reply or Sign up for a free account.

Similar topics

4
by: Venkat | last post by:
Hi All, I need to copy strings from a single dimensional array to a double dimensional array. Here is my program. #include <stdio.h> #include <stdlib.h>
1
by: Chris K | last post by:
I am relatively new to C++ and hope that this question is relevant. I have spent some time at the local library and some time on dejanews, but have no decided to go ahead with my question, since...
9
by: Gunnar G | last post by:
Is there anything like vector in STL, that performes deep copy of the elements it contains? I hope this will appear in future releases of STL :)
2
by: Alex | last post by:
Entering the following in the Python shell yields >>> help(dict.copy) Help on method_descriptor: copy(...) D.copy() -> a shallow copy of D >>>
11
by: PengYu.UT | last post by:
The following program calls the normal constructor and the copy constructor. By calling the copy constuctor is redundandant, all I want is only a vector of a trial object. Is there any way to...
3
by: N. Spiker | last post by:
I am attempting to receive a single TCP packet with some text ending with carriage return and line feed characters. When the text is send and the packet has the urgent flag set, the text read from...
5
by: nagrik | last post by:
Hello group, Last week I picked up a thread, which pointed out that if a copy constructor is created with pointers instead of reference, there is a danger of it going in infinite recursion. ...
4
by: shuisheng | last post by:
Dear All, Is there any easy way to make sure all my object copies are deep copy or shallow copy? I do not like to implement it in each class one by one. Thanks, Shuisheng
1
by: 7stud | last post by:
Here is some example code: d = {"a":"hello", "b":} x = d.copy() d=10 print x output: {'a': 'hello', 'b': }
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.