我正在阅读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;
}
答案 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'”,该程序将正常工作。