30/09/2018, 20:22
Thắc mắc về chuỗi trong C
Chả là em đang đọc quyển sách Head First C, chương 2.5: String Thethory thì nó có 1 ct tìm kiếm 1 chuỗi con trong 1 chuỗi to hơn, code của nó đây ạ:
#include <stdio.h>
#include <string.h>
void find_track(char c[]);
char tracks[][80] = {
"I left my heart in Harvard 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'
", i, tracks[i]);
}
}
}
int main()
{
char search_for[80] = "";
printf("Search for: ");
//scanf("%s", search_for);
fgets(search_for, 80, stdin);
find_track(search_for);
return 0;
}
Trong sách thì thấy nó test ngon, chạy được, còn khi em chạy thì nó lại không hoạt động .Khi thay chỗ char search_for[80] = "";`` bằng ``char search_for[số kí tự nhập vào] = ""
thì nó lại hđ. À mà trong sách nó compile bằng command line như anh @ltd mà em code bằng CodeBlocks. Mọi người có thể giải thích cho em được không?
Bài liên quan
Code này không hoạt động vì bạn dùng hàm
fgets
để nhập chuỗi -> hàm này nó bao gồm cả dấu\n
trong chuỗi nên nó luôn khác với chuỗi đã có. bạn phải có bước xóa bỏ ký tự ‘\n’.search_for[strlen(search_for) - 1] = '\0';