By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,963 Members | 2,122 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,963 IT Pros & Developers. It's quick & easy.

searching, creating new file from old using c++

P: n/a
I would like to write a C++ program that searches for the variable "state !=
0" in a text file, and then go back 3 steps each time to read "count". The
program should create a new file with "state count". The data in the old
file is variable, but could be as follows:

old_file.txt
new_file.txt
state count
state count
0 22
1 83
0 83 <-
1 13
0 13
1 34
0 34
1 33
1 33
1 23
1 31
1 66
1 23 <-
3 63
1 66
3 37
0 45
3 88
1 22
3 66
1 98
3 36
0 13
0 73
0 53
0 63 <-
0 37
0 88
3 66
3 36
3 33
3 88
3 67
0 45
0 35
0 44

Any help will be greatly appreciated.

Regards,
Michele
Apr 11 '06 #1
Share this Question
Share on Google+
11 Replies


P: n/a
Sorry, the formatting is messed up.

I would like to write a C++ program that searches for the variable
"state != 0" in a text file, and then go back 3 steps each time to read
"count". The
program should create a new file with "state count". The data in the old
file is variable, but could be as follows:

old_file.txt
state count
0 22
0 83 <-
0 13
0 34
1 33
1 31
1 23 <-
1 66
0 45
1 22
1 98
0 13
0 73
0 53
0 63 <-
0 37
0 88
3 66
3 36
3 33
3 88
3 67
0 45
0 35
0 44

new_file.txt
1 83
1 13
1 34
1 33
1 23
1 66
3 63
3 37
3 88
3 66
3 36
Any help will be greatly appreciated.

Regards,
Michele

"Michele and John" <ph**************@comcast.net> wrote in message
news:xJ********************@comcast.com...
I would like to write a C++ program that searches for the variable "state != 0" in a text file, and then go back 3 steps each time to read "count". The
program should create a new file with "state count". The data in the old file is variable, but could be as follows:

old_file.txt
new_file.txt
state count
state count
0 22
1 83
0 83 <-
1 13
0 13
1 34
0 34
1 33
1 33
1 23
1 31
1 66
1 23 <-
3 63
1 66
3 37
0 45
3 88
1 22
3 66
1 98
3 36
0 13
0 73
0 53
0 63 <-
0 37
0 88
3 66
3 36
3 33
3 88
3 67
0 45
0 35
0 44

Any help will be greatly appreciated.

Regards,
Michele

Apr 11 '06 #2

P: n/a
On Mon, 10 Apr 2006 22:38:14 -0400, "Michele and John"
<ph**************@comcast.net> wrote in comp.lang.c:
I would like to write a C++ program that searches for the variable "state !=
0" in a text file, and then go back 3 steps each time to read "count". The
program should create a new file with "state count". The data in the old
file is variable, but could be as follows:


[snip]

If you want to write a C++ program, why the blue blazes are you
cross-posting to comp.lang.c?

They are two different languages, you know, and C++ is completely
off-topic in comp.lang.c.

Kindly be more polite in the future.

Followup set.

--
Jack Klein
Home: http://JK-Technology.Com
FAQs for
comp.lang.c http://c-faq.com/
comp.lang.c++ http://www.parashift.com/c++-faq-lite/
alt.comp.lang.learn.c-c++
http://www.contrib.andrew.cmu.edu/~a...FAQ-acllc.html
Apr 11 '06 #3

P: n/a

Jack Klein wrote:
On Mon, 10 Apr 2006 22:38:14 -0400, "Michele and John"
<ph**************@comcast.net> wrote in comp.lang.c:
I would like to write a C++ program that searches for the variable "state !=
0" in a text file, and then go back 3 steps each time to read "count". The
program should create a new file with "state count". The data in the old
file is variable, but could be as follows:


[snip]

If you want to write a C++ program, why the blue blazes are you
cross-posting to comp.lang.c?

They are two different languages, you know, and C++ is completely
off-topic in comp.lang.c.

Kindly be more polite in the future.

Followup set.


anyone remember the old anti-grumpiness campaign?
--
Nick Keighley

Apr 11 '06 #4

P: n/a

Michele and John wrote:
Sorry, the formatting is messed up.

I would like to write a C++ program that searches for the variable
"state != 0" in a text file, and then go back 3 steps each time to read
"count". The
program should create a new file with "state count". The data in the old
file is variable, but could be as follows:

old_file.txt
state count
0 22
0 83 <-
0 13
0 34
1 33
1 31
1 23 <-
1 66
0 45
1 22
1 98
0 13
0 73
0 53
0 63 <-
0 37
0 88
3 66
3 36
3 33
3 88
3 67
0 45
0 35
0 44

new_file.txt
1 83
1 13
1 34
1 33
1 23
1 66
3 63
3 37
3 88
3 66
3 36
Any help will be greatly appreciated.

Regards,
Michele

"Michele and John" <ph**************@comcast.net> wrote in message
news:xJ********************@comcast.com...
I would like to write a C++ program that searches for the variable "state

!=
0" in a text file, and then go back 3 steps each time to read "count". The
program should create a new file with "state count". The data in the

old
file is variable, but could be as follows:

old_file.txt
new_file.txt
state count
state count
0 22
1 83
0 83 <-
1 13
0 13
1 34
0 34
1 33
1 33
1 23
1 31
1 66
1 23 <-
3 63
1 66
3 37
0 45
3 88
1 22
3 66
1 98
3 36
0 13
0 73
0 53
0 63 <-
0 37
0 88
3 66
3 36
3 33
3 88
3 67
0 45
0 35
0 44

Any help will be greatly appreciated.

Regards,
Michele


Apr 11 '06 #5

P: n/a
Michele and John wrote:
Sorry, the formatting is messed up.

I would like to write a C++ program that searches for the variable
"state != 0" in a text file, and then go back 3 steps each time to read
"count". The
program should create a new file with "state count". The data in the old
file is variable, but could be as follows:

old_file.txt
state count
0 22
0 83 <-
0 13
0 34
1 33
1 31
1 23 <-
1 66
0 45
1 22
1 98
0 13
0 73
0 53
0 63 <-
0 37
0 88
3 66
3 36
3 33
3 88
3 67
0 45
0 35
0 44

new_file.txt
1 83
1 13
1 34
1 33
1 23
1 66
3 63
3 37
3 88
3 66
3 36
Any help will be greatly appreciated.


<snip repeated initial post>

grep "1 " old_file.txt

(ok there are better REs but I can't be bothered to look it up)

if you *really* have to write a program take a look at strstr().
if you *really* have to do it in C++ then try comp.lang.c++. I'd
guess std::string would be a place to start.
--
Nick Keighley

"High Integrity Software: The SPARK Approach to Safety and Security"
Customers interested in this title may also be interested in:
"Windows XP Home"
(Amazon)

Apr 11 '06 #6

P: n/a
Nick,
Thanks for your advice.

Does strstr() have the ability to search for a string at the current line in
a text file, and if there is a match
1) copy the string at the current line n, and also
2) copy strings at a previous line? e.g. n-3

Please let me know your thoughts.

Regards,
Michele
"Nick Keighley" <ni******************@hotmail.com> wrote in message
news:11**********************@z34g2000cwc.googlegr oups.com...
Michele and John wrote:
Sorry, the formatting is messed up.

I would like to write a C++ program that searches for the variable
"state != 0" in a text file, and then go back 3 steps each time to read
"count". The
program should create a new file with "state count". The data in the old file is variable, but could be as follows:

old_file.txt
state count
0 22
0 83 <-
0 13
0 34
1 33
1 31
1 23 <-
1 66
0 45
1 22
1 98
0 13
0 73
0 53
0 63 <-
0 37
0 88
3 66
3 36
3 33
3 88
3 67
0 45
0 35
0 44

new_file.txt
1 83
1 13
1 34
1 33
1 23
1 66
3 63
3 37
3 88
3 66
3 36
Any help will be greatly appreciated.


<snip repeated initial post>

grep "1 " old_file.txt

(ok there are better REs but I can't be bothered to look it up)

if you *really* have to write a program take a look at strstr().
if you *really* have to do it in C++ then try comp.lang.c++. I'd
guess std::string would be a place to start.
--
Nick Keighley

"High Integrity Software: The SPARK Approach to Safety and Security"
Customers interested in this title may also be interested in:
"Windows XP Home"
(Amazon)

Apr 11 '06 #7

P: n/a
please don't top post. I have re-arranged your post accordingly.
Also trim all but essentials from what you are replying to.

Michele and John wrote:
"Nick Keighley" <ni******************@hotmail.com> wrote in message
news:11**********************@z34g2000cwc.googlegr oups.com...
Michele and John wrote:
Sorry, the formatting is messed up.

I would like to write a C++ program that searches for the variable
"state != 0" in a text file, and then go back 3 steps each time to read
"count". The program should create a new file with "state count". The
data in the file is variable, but could be as follows:

old_file.txt
state count
0 22
0 34
1 33
1 66
0 45
much shortened example
new_file.txt
1 33
1 66

<also much shotened>

<snip>
grep "1 " old_file.txt

(ok there are better REs but I can't be bothered to look it up)
so why don't you use grep?
if you *really* have to write a program take a look at strstr().
if you *really* have to do it in C++ then try comp.lang.c++. I'd
guess std::string would be a place to start.

do you want C or C++? They are different languages. I have only
given a C answer.

Does strstr() have the ability to search for a string at the current line in
a text file, and if there is a match
no. as 20s with google woul have shown you. Use fgets() to read a line
and
strstr() to find a string within it.
1) copy the string at the current line n, and also
2) copy strings at a previous line? e.g. n-3


why do you need to do this to solve your problem. And what does
"eg. n-3" mean?
--
Nick Keighley

Apr 11 '06 #8

P: n/a
Nick Keighley wrote:
old_file.txt
state count
0 22
0 34
1 33
1 66
0 45
much shortened example but wrong
new_file.txt
1 33
1 66

<also much shotened>
and equally wrong
<snip>
grep "1 " old_file.txt

(ok there are better REs but I can't be bothered to look it up)

so why don't you use grep?


Because your solution is wrong. It can't be done with grep alone. The
requirement was, that at encountering a state not equal to zero, the
value three lines above should be output. It's, however, trivial in
scripting languages like awk:

awk '$1 { print $1, old3 }
{ old3=old2; old2=old1; old1=$1; } ' old_file.txt

This can be easily translated into C++, which is left as an exercise to
the reader (OP)

Christian
Apr 11 '06 #9

P: n/a
Thanks everyone for your suggestions.

I implemented the solution using variations of the STL vector...

Regards,
Michele
Apr 13 '06 #10

P: n/a
"Michele and John" <ph**************@comcast.net> writes:
Thanks everyone for your suggestions.

I implemented the solution using variations of the STL vector...


The parent article was posted only to comp.lang.c++. Why did you
cross-post your followup to comp.lang.c?

And please read <http://cfaj.freeshell.org/google/>.

--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.
Apr 13 '06 #11

P: n/a
Keith,
The parent article was posted only to comp.lang.c++. Why did you
cross-post your followup to comp.lang.c?
If you paid attention to detail, you would have noticed that I posted the
original article to both comp.lang.c++,comp.lang.c
Why did you cross-post to comp.lang.c?

Michele.

"Keith Thompson" <ks***@mib.org> wrote in message
news:ln************@nuthaus.mib.org... "Michele and John" <ph**************@comcast.net> writes:
Thanks everyone for your suggestions.

I implemented the solution using variations of the STL vector...
The parent article was posted only to comp.lang.c++. Why did you
cross-post your followup to comp.lang.c?

And please read <http://cfaj.freeshell.org/google/>.

--
Keith Thompson (The_Other_Keith) ks***@mib.org

<http://www.ghoti.net/~kst> San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst> We must do something. This is something. Therefore, we must do this.

Apr 13 '06 #12

This discussion thread is closed

Replies have been disabled for this discussion.