Jump to content

Issue with strstr function from Headfrist C book.

cordellkey's Photo
Posted Aug 14 2012 05:35 AM
1254 Views

Hi, the code below complies (See p 94 of Headfirst C), however the strstr function is not working for some reason? If I enter part of the track name, the program is supposed to return the entire song name (ex. If I type in Dancing, the strstr function should return "Dancing with a dork"). Is there a reason why the strstr function is not working?

#include <stdio.h>
#include <string.h>

char tracks[] [80] ={
"I left my heart in harvard med school",
"Newark, Newark - a wonderful town",
"Dancing with a dork",
"Fron here to maternity",
"The girl from Iwo Jima",
};

void find_track(char search_for[])
{
int i;
for (i = 0; i <5; i++){
if (strstr(tracks[i],search_for))
printf("Track %i: '%s'\n", i, tracks[i]);
}

}

int main()
{
char search_for[80];
printf("Search for: ");
fgets(search_for, 80, stdin);
find_track(search_for);
return 0;
}

Tags:
0 Subscribe


1 Reply

0
  Ichimonji10's Photo
Posted Sep 22 2012 03:44 PM

Your "needle" includes a newline, and none of your "haystacks" include a newline. You need to strip the newline sequence from your "needle" before strstr() will come up with any results. Note that there are a wide variety of ways to denote a newline, and \r and \n are the most common methods of doing so.

Sample solution: http://pastebin.com/af3ZQ41f

Thanks to this post for some ideas: http://forums.devshe...296&postcount=5
Consider again that dot. http://pastebin.com/jSUfqHdG