什么" search_for [strlen(search_for) - 1] =' \ 0';"意思?

时间:2014-12-17 01:03:45

标签: c

我正在阅读C book编程的介绍,我不确定代码行是做什么的。我使用和不使用此语句运行代码,结果是一样的。我怀疑在用户输入字符串后它正在摆脱'Enter',但我不确定。我假设作者写这行是有原因的。字符数组被传递给循环数组数组的函数,并使用'strstr函数找到要搜索的文本。

int main () {
    char search_for[80];
    printf("Enter text to search for: ");
    scanf("%79s", search_for);
    search_for[strlen(search_for) -1] = '\0'; // why is this line here?
    find_track(search_for);
    return 0;
}

3 个答案:

答案 0 :(得分:3)

它用空字符覆盖扫描字符串的最后一个字符,将字符串缩短一个字符。程序员为什么要做这样的事我不能说。

答案 1 :(得分:1)

从“字符串”search_for的末尾删除一个字符。

答案 2 :(得分:0)

这是一个错误。该代码编写为与fgets一起使用而不是scanf。 Fgets在用户输入的字符串末尾添加换行符,“search_for [strlen(search_for)-1] ='\ 0'”将用'\ 0'覆盖该换行符。

问题:上面的代码与scanf导致用户输入的最后一个字符被覆盖。因此,使用字符串“ab”的搜索仅搜索“a”。

如果不包括“search_for [strlen(search_for)-1] ='\ 0'”,该程序将正常工作。