input/output trouble cause segmentation fault

E

eric

Dear advanced c/g++ programers:

A program request me to enter twice input
that program probably is tested good on visual c++ 7.1 on window xp,
but my system is g++ on linux(Ubuntu10.04)
It assume
Enter some strings: a b c d
^Z
Enter some more strings: d e f g
^Z
Union: a b c d e f g
Difference: a b c
Intersection: d
all these you can get from page 273 and 274 of book(c++ cookbook)

but my test result is
-------------------------------
eric@eric-laptop:~/cppcookbook/ch7$ ./a.out
Enter a series of strings: a b c d
^Z
[7]+ Stopped ./a.out
eric@eric-laptop:~/cppcookbook/ch7$ ./a.out
Enter a series of strings: a b c d
{a, b, c, d}
Segmentation fault
-------------------------------------------------------------------
second case , I used <Enter><Control-D>
first case, I used <Enter><Control-Z>

the following in the program I tested, you still can download from
http://examples.oreilly.com/9780596007614/
------------------------------------------------------------------------------------------------
// Example 7-8. Unsing set operations
#include <iostream>
#include <algorithm>
#include <string>
#include <set>
#include <iterator>
#include "utils.h" // For parintContainer(): see 7.10

using namespace std;

int main() {

cout << "Enter some strings: "
istream_iterator<string> start(cin);
istream_iterator<string> end;
set<string> s1(start, end);

cin.clear();

cout << "Enter some more strings: ";
set<string> s2(++start, end);

set<string> setUnion;
set<string> setInter;
set<string> setDiff;

set_union(s1.begin(), s1.end(),
s2,begin(), s2.end(),
inserter(setUnion, setUnion.begin()));

set_difference(s1.begin(), s1.end(),
s2.begin(), s2.end(),
inserter(setDiff, setDiff.begin()));

cout << "Union:\n";
printContainer(setUnion);
cout << "Difference:\n";
printContainer(setDiff);
cout << "Intersection:\n";
printContainer(setinter);
}
--------------------------------------------------------------------------------------------------
utils.h
-------------------------------
// Example 7-12. Writing your own printing function
#include <iostream>
#include <string>
#include <algorithm>
#include <iterator>
#include <vector>

using namespace std;

template<typename C>
void printContainer(const C& c, char delim = ',', ostream& out = cout)
{
printRange(c.begin(), c.end(), delim, out);
}

template<typename Fwd>
void printRange(Fwd first, Fwd last, char delim = ',', ostream& out =
cout) {
out << "{";
while (first != last) {
out << *first;
if (++first != last)
out << delim << ' ';
}
out << "}" << endl;
}
 
I

Ian Collins

Dear advanced c/g++ programers:

A program request me to enter twice input
that program probably is tested good on visual c++ 7.1 on window xp,
but my system is g++ on linux(Ubuntu10.04)
It assume
Enter some strings: a b c d
^Z
Enter some more strings: d e f g
^Z
Union: a b c d e f g
Difference: a b c
Intersection: d
all these you can get from page 273 and 274 of book(c++ cookbook)

but my test result is
-------------------------------
eric@eric-laptop:~/cppcookbook/ch7$ ./a.out
Enter a series of strings: a b c d
^Z
[7]+ Stopped ./a.out
eric@eric-laptop:~/cppcookbook/ch7$ ./a.out
Enter a series of strings: a b c d
{a, b, c, d}
Segmentation fault

What does your debugger tell you?
 
E

eric

Dear advanced c/g++ programers:
   A program request me to enter twice input
that program probably is tested good on visual c++ 7.1 on window xp,
but my system is g++ on linux(Ubuntu10.04)
It assume
Enter some strings: a b c d
^Z
Enter some more strings: d e f g
^Z
Union: a b c d e f g
Difference: a b c
Intersection: d
all these you can get from page 273 and 274 of book(c++ cookbook)
but my test result is
-------------------------------
eric@eric-laptop:~/cppcookbook/ch7$ ./a.out
Enter a series of strings: a b c d
^Z
[7]+  Stopped                 ./a.out
eric@eric-laptop:~/cppcookbook/ch7$ ./a.out
Enter a series of strings: a b c d
{a, b, c, d}
Segmentation fault

What does your debugger tell you?

Thanks your reply
I modify some
it have output, but its output not exactly match book predict,
especially, when I input
a b c d
then
d e f g
Union: is match
difference is match
but
Intersection is not
My result is {}, but book expect d
and I think book is correct
so plz help again, thanks a lot in advance
Eric
 
E

eric

On 07/13/11 05:27 PM, eric wrote:
Dear advanced c/g++ programers:
   A program request me to enter twice input
that program probably is tested good on visual c++ 7.1 on window xp,
but my system is g++ on linux(Ubuntu10.04)
It assume
Enter some strings: a b c d
^Z
Enter some more strings: d e f g
^Z
Union: a b c d e f g
Difference: a b c
Intersection: d
all these you can get from page 273 and 274 of book(c++ cookbook)
but my test result is
-------------------------------
eric@eric-laptop:~/cppcookbook/ch7$ ./a.out
Enter a series of strings: a b c d
^Z
[7]+  Stopped                 ./a.out
eric@eric-laptop:~/cppcookbook/ch7$ ./a.out
Enter a series of strings: a b c d
{a, b, c, d}
Segmentation fault
What does your debugger tell you?

Thanks your reply
I modify some
it have output, but its output not exactly match book predict,
especially, when I input
a b c d
then
d e f g
Union: is match
difference is match
but
Intersection is not
My result is {}, but book expect d
and I think book is correct
so plz help again, thanks a lot in advance
Eric

never mind
I miss a section
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,954
Messages
2,570,116
Members
46,704
Latest member
BernadineF

Latest Threads

Top