How do I continue reading in input even if it encounters a space? Is it possible to get several sentences, save it in a linked list , then output it? In my program everytime a space is encountered, it prints out the input one word at a time, each one a newline, instead of a sentece.
How do I modify it to accept sentences instead of words?
Thanks in advance!
#include <stdio.h>
#include <stdlib.h>
#define MAXNAMELEN 20
typedef struct bdaynode
{
char fname[MAXNAMELEN];
struct namenode *next;
} NameStruct;
typedef NameStruct *NamePtr;
NamePtr newName(void)
{
NamePtr element;
element = (NamePtr) malloc(sizeof(NameStruct));
element->next = NULL;
return(element);
}
void setNameData(NamePtr list, char *fname)
{
strcpy(list->fname, fname);
return;
}
NamePtr getName(void)
{
char fname[MAXNAMELEN];
NamePtr tmp;
printf("Enter person name: ");
if (scanf("%s", fname) == EOF)
return(NULL);
tmp = newName();
setNameData(tmp, fname);
return(tmp);
}
NamePtr insert(NamePtr list, NamePtr element)
{
element->next = list;
return(element);
}
NamePtr insertEnd(NamePtr list, NamePtr element)
{
NamePtr tmp;
if (list == NULL)
return(element);
for(tmp = list; tmp->next != NULL; tmp = tmp->next)
;
tmp->next = element;
return(list);
}
void printName(NamePtr list)
{
NamePtr tmp;
printf("\n");
for(tmp = list; tmp != NULL; tmp = tmp->next)
printf("%s\n", tmp->fname);
return;
}
NamePtr deleteAll(NamePtr list)
{
NamePtr tmp;
for(; list != NULL; list = tmp)
{
tmp = list->next;
free(list);
}
return(NULL);
}
int main(void)
{
NamePtr firstName = NULL, tmp;
while ((tmp = getName()) != NULL)
firstName = insertEnd(firstName, tmp);
printName(firstName);
deleteAll(firstName);
return 0;
}