C strstr 问题,即使应该是 1 也返回 0?
C strstr issue, Returning 0 even when should be 1?
花了一些时间尝试调试它。 Strstr 总是 returns 0,即使我传递了一个像 "town" 这样应该有意义的参数并打印 1。我在这里做错了什么?
#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",
"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)) // Always 0 never 1?
printf("Track %i: '%s'\n", i, tracks[i]);
}
}
int main(void)
{
char search_for[80];
printf("Search for: ");
fgets(search_for, 80, stdin);
find_track(search_for);
return 0;
}
函数 fgets
在字符串中包含换行符 '\n'
,对应于按下的 Enter 键。
你应该在调用函数之前删除它 find_track
例如
size_t n = strlen( search_for );
if ( n && search_for[n-1] == '\n' ) search_for[--n] = '[=10=]';
考虑到最好以不处理全局数组的方式编写函数,这样会更通用。两个数组包括全局数组的大小应该是它的参数
花了一些时间尝试调试它。 Strstr 总是 returns 0,即使我传递了一个像 "town" 这样应该有意义的参数并打印 1。我在这里做错了什么?
#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",
"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)) // Always 0 never 1?
printf("Track %i: '%s'\n", i, tracks[i]);
}
}
int main(void)
{
char search_for[80];
printf("Search for: ");
fgets(search_for, 80, stdin);
find_track(search_for);
return 0;
}
函数 fgets
在字符串中包含换行符 '\n'
,对应于按下的 Enter 键。
你应该在调用函数之前删除它 find_track
例如
size_t n = strlen( search_for );
if ( n && search_for[n-1] == '\n' ) search_for[--n] = '[=10=]';
考虑到最好以不处理全局数组的方式编写函数,这样会更通用。两个数组包括全局数组的大小应该是它的参数