getline and linked list problem

K

Kay

This function is used getline function to get data. The data is stored
as String. I want to add it in a linked list. However, the strcpy that I
have pointed cause the program segementation fault. What I can do to
add the item in the linked list and it don't need to change the Linked
list ADT item type ?


void load(istream& is, Position p, List * r )

string temp_name;

//get the restaurant name in restaurnat.txt
while ( getline(is, temp_name, '\n')) {

char *name;

//change type of name of restaurant from string to char
name = new char[temp_name.length() + 1 ];
strcpy( name, temp_name.c_str()); <-- This one

char *namet;

p = ListHead(r);
namet = (char *)malloc(sizeof(name));
strcpy (namet, name);

//Add the namet in the linked list
if (!rest_get_name(r, p, namet)) {
exit (EXIT_FAILURE);
}
 
K

Karl Heinz Buchegger

Kay said:
This function is used getline function to get data. The data is stored
as String. I want to add it in a linked list. However, the strcpy that I
have pointed cause the program segementation fault. What I can do to
add the item in the linked list and it don't need to change the Linked
list ADT item type ?

void load(istream& is, Position p, List * r )

string temp_name;

//get the restaurant name in restaurnat.txt
while ( getline(is, temp_name, '\n')) {

char *name;

//change type of name of restaurant from string to char
name = new char[temp_name.length() + 1 ];
strcpy( name, temp_name.c_str()); <-- This one

That should be ok.
It might be that you managed to blow up the memory management
in a previous call or somewhere else in your program ...
char *namet;

p = ListHead(r);
namet = (char *)malloc(sizeof(name));
strcpy (namet, name);

.... this is suspect.
namet points to memory with the sizeof a char pointer.
Yet you insist on copying an arbitrary number of characters
to it. Shouldn't the above sequence read

namet = (char*)malloc( strlen( name ) + 1 );
//Add the namet in the linked list
if (!rest_get_name(r, p, namet)) {
exit (EXIT_FAILURE);
}

PS: Is there a reason you are using malloc in a C++ program?
 

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,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top