【发布时间】:2013-01-27 01:36:01
【问题描述】:
我是初学者,tracks.c:
#include <stdio.h>
#include <string.h>
char tracks[][5] = {
"one",
"two",
"three",
"four",
"five",
"six",
};
void track_search(char search_for[]) {
int i;
puts(search_for);
puts(strstr(tracks[0], search_for));
/*
for (i = 0; i < 6; i++) {
if (strstr(tracks[i], search_for)) {
printf("tracks %i: %s\n", i,tracks[i]);
} else {
puts("Nothing found");
}
}
*/
}
int main() {
char search_for[5];
printf("enter your word: ");
fgets(search_for, 5, stdin);
track_search(search_for);
return 0;
}
$ gcc track.c && ./a.out
输入你的话:上
开
分段错误
但如果我使用 puts(strstr(tracks[0], "on"));而不是 puts(strstr(tracks[0], search_for)); 可以用酒,有人知道哪里错了吗?
【问题讨论】:
-
您未阅读的 fgets 文档显示“换行符使 fgets 停止读取,但该函数将其视为有效字符并包含在复制到 str 的字符串中。”和“在复制到 str 的字符后自动附加终止空字符。” ...这两个都是重要的信息。
标签: c pointers segmentation-fault strstr