Chào các bạn!
Mình đang học lập trình C, trong 1 bài tập mình làm theo Head first C nhưng không ra kết quả như hướng dẫn. Code bài tập như sau:
#include <stdio.h>
#include <string.h>
char tracks[][80] =
{
"I left my heart in Havard 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[20];
printf("Search for: ");
//scanf("%s", search); // thay bằng scanf thì cho kết quả như Head_first_C
fgets(search, sizeof(search), stdin); // fgets() như trong bài hướng dẫn ko cho kết quả như Head_first_C
printf("You are finding for '%s'.\n", search);
find_track(search);
while(1);
return 0;
}
Mình kiểm tra thì nhận thấy là fgets() đưa thêm ký tự ‘\n’ vào cuối string vì thế nên match được kết quả. Mình mới học nên còn hạn hẹp. Bạn nào giúp mình giải thích vụ này với!

Cũng tự học mà ra cả.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?