|
Maybe you can try this.
#include <iostream>
int main()
{
const char * p= "ddddd";
char q[500];
strcpy_s(q, p);
std::cout << q << std::endl;
return 0;
}
|
|
|
|
|
|
const char * p= "ddddd";
char q[500];
int i;
i=0;
while (p[i] && i < sizeof(q) - 1 )
q[i++] = p[i];
q[i]='\0';
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
|
Why do you complicate your life that way Are you borde today ?
|
|
|
|
|
Cedric Moonen wrote: Why do you complicate your life that way
Actually it was pathetically simple.
I'm always 'borde'!
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
CPallini wrote: Actually it was pathetically simple.
Yes I know that it was simple but you are suggesting to the OP that each time he has to copy a string, he should use this code. Honnestly, I really don't think it is a good idea because it makes the code much more difficult to understand (suppose that you repeat that code in a lot of places in your code ). And apparently, that's what the OP is going to do instead of using one of the "built in" mechanism.
CPallini wrote: I'm always 'borde'
Mh, yeah, I meant bored of course
|
|
|
|
|
Cedric Moonen wrote: Yes I know that it was simple but you are suggesting to the OP that each time he has to copy a string, he should use this code.
Nope, I would suggest him to use the library functions actually. I posted the code just to show how the task could be accomplished without using such functions (as a side note to other answers).
Cedric Moonen wrote: Honnestly, I really don't think it is a good idea
I agree, because library functions are more general.
Cedric Moonen wrote: because it makes the code much more difficult to understand (suppose that you repeat that code in a lot of places in your code Dead ).
I disagree. OP should have at least a rough idea on what happens behind the curtains of the library functions. Repeating the code is a very bad practice that I would never suggest. I suppose that showing a piece of code is not a boost to 'inline' code instead of properly 'wrap the code with a function and then call it everywhere it is needed'.
Cedric Moonen wrote: And apparently, that's what the OP is going to do instead of using one of the "built in" mechanism
I'm really not so clever to guess OP intentions. Anyway I would suggest him to use library functions (that anyway are not, in my opinion, a built-in mechanism...).
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Some would reach for the off the self "pirelli" wheel, others fashoin themselves the "pallini" wheel... both are high quality
|
|
|
|
|
killabyte wrote: Some would reach for the off the self "pirelli" wheel, others fashoin themselves the "pallini" wheel... both are high quality
Well, personally, I would never use hand-crafted tyres on my GSR.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Well, you've not had a C++ answer using STL yet...so, just because:
const char * p= "ddddd";
char q[500];
std::copy(p, p+strlen(p), q);
Of course, it is less efficient than the pure C answers, as it iterates through p twice.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Stuart Dootson wrote: // needs #include
const char * p= "ddddd";
char q[500];
std::copy(p, p+strlen(p), q);
That's hybrid!
const char * p= "ddddd";
char q[500];
std::string s(p);
s += '\0';
s.copy(q, s.length());
(I know, that's, well..., ugly! )
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
CPallini wrote: That's hybrid
Hybrid's[^] good these days, maaaaan (allegedly).
CPallini wrote: // needs a different #include!
const char * p= "ddddd";
char q[500];
std::string s(p);
s += '\0';
s.copy(q, s.length());
(I know, that's, well..., ugly! )
Well, if I'd known you were bringing strings, I'd've used this:
const std::string p = "ddddd";
std::string q;
q=p;
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Stuart Dootson wrote: const std::string p = "ddddd";
std::string q;
q=p;
std::string q = "ddddd";
FFY
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Hello,
I have a 2D waveform data (Sine/Square/Triangle). Could some one tell me how to calculate period and duty cycle from it.
Note:
I am new to this forum, if this is a wrong place to post this topic, some one re-direct me to correct place.
Thanks.
modified on Tuesday, July 14, 2009 2:47 AM
|
|
|
|
|
Hi,
I'm not ure what you asking, a quick Google should tell you how to calculate period & duty cycle. Try to think of a more specific programming question and perhaps someone here can help you.
Ali
|
|
|
|
|
I am just trying to implement the period and duty cycle calculation in a C++ class based on the waveform array data. Trying to figure out some formula to find those values.
|
|
|
|
|
Period - find the max/min values of your waveform. Now look for the times when the waveform crosses (min+max)/2. The period should be double the time between adjacent crossings of that value.
Alternatively, calculate the FFT of the waveform and look for the big peak - that'll show dominant frequency in your signal.
Duty cycle[^] - Wikipedia defines as Duty cycle is the proportion of time during which a component, device, or system is operated. First you need to decide what the 'active' state of your waveform is and work out what fraction of time it's active.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Thanks Stuart.
But i have an unsymmetrical waveform data, so i couldnt use (max+min)/2 to determine the level crossing. Also without the sample rate of the waveform how can i find period by finding the total noOfSamples of a cycle.
|
|
|
|
|
sks83 wrote: without the sample rate of the waveform
If you don't know the sample rate, you can't calculate the period in terms of time - only in terms of samples.
sks83 wrote: But i have an unsymmetrical waveform data, so i couldnt use (max+min)/2 to determine the level crossing
In that case, find the number of samples between maxima or minima.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
If your waves are "pure" (square, sine or pure triangular), you could calculate the time were the signal is positive and negative. You add those two times and you end up with the total period. The ratio of those times will give you the duty cycle.
To calculate those times, this is quite easy: simply walk over your points and check when the sign changes. At that time, you keep the time (start time) and walk over the data until the sign change (stop time). The difference between stop and start time gives you the time were the signal is negative or positive (depending of the sign).
|
|
|
|
|
Thanks Cedric.
1. My waveform is not symmetric and it can have n number of cycles. Also waveform data may be clipped at the beginning.
2. If you could tell me how to determine the crossing level of the waveform. With that i can determine the period.
modified on Tuesday, July 14, 2009 5:18 AM
|
|
|
|
|
sks83 wrote: My waveform is not symmetric and it can have n number of cycles. Also waveform data may have clipped data at the beginning.
Not symetric is not a problem. What I mean is that if you have a very complex waveform (like sound), then this technique won't work. If a period of your signal is the time in which your signal is positive plus the time were the signal is negative, then this will work fine (and it is quite easy to implement).
If you have multiple cycles, that's fine, you can for instance do an average of all the positive times and all the negative times (well, that depends on your requirements of course).
For the clipping, simply skip the first half period: start your calculation were the sign of your signal is switching.
sks83 wrote: 2. If you could tell me how to determine the crossing level of the waveform. With that i can determine the period.
What do you mean by crossing level ? The time at which your signal sign changes ? If yes, then that is really easy to do: simply walk over your data points and check when the sign of your data changes.
|
|
|
|
|
Hello cedric,
I could not walk through each data points, since i have more than 20,000 samples.
FYI
Unsymmetrical Sine waveform data is as below,
ON time
Start - 5V.
Stop - 5V.
Max - 7V.
OFF time
Start - 5V.
Stop - 5V.
Min - 1V.
There will not be any negative data points. So how could i find that the waveform crosses at 5V.
|
|
|
|
|
Hi, You may well have 20,000 samples but you can still 'walk through' them, in fact you will have to analyse each point in some way to get the results you require.
I do not entirely follow the description of your waveform, but since you have no negative points you could find the time between two peaks (maximums) or troughs (minimums), this would be an equally valid measurement of period.
Hope that helps,
Ali
|
|
|
|