Using strstr in C

This program does not give any results ... the find_track function should return a track if the corresponding line is entered into it.

#include<stdio.h> #include<string.h> char tracks[][80] = { "I left my heart in Harward Med School", "Newark, Newark - a wonderful town", "Dancing with a Dork", "From 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; } 
+4
source share
1 answer

fgets () reads the line you entered, as the docs say, this includes any new line you enter into your program. So, you type "c" and press enter, you will get the string "c \ n".

So get rid of this new line:

 if (fgets(search_for,80,stdin) && search_for[0]) [ search_for[strlen(search_for) - 1] = 0; find_track(search_for); } 
+5
source

All Articles