阅读以下代码file_name = strtok(buffer, " "); if(strncmp(file_name,"download",8) != 0) { printf("Invalid command from client\n"); close(connfd); //continue; } file_name = strtok(NULL, " "); printf("File name requested: %s\n", file_name);如果buffer是download abc.txt,那么几次对file_name赋值后,file_name都是什么,如何能最后打印出file_name是abc.txt
时间: 2024-03-23 08:36:29 浏览: 96
strrchr strtok_r C库函数使用
5星 · 资源好评率100%
在这段代码中,第一次对`file_name`赋值是通过`strtok(buffer, " ")`,它会将`buffer`字符串按照空格分割成多个子字符串,`file_name`会指向分割后的第一个字符串,即"download"。因此,第一次对`file_name`赋值后,它的值是"download"。
接下来,通过`strtok(NULL, " ")`再次分割`buffer`字符串,此时`file_name`会指向分割后的第二个子字符串,即"abc.txt"。因此,最终`file_name`的值是"abc.txt"。
如果想要最后打印出`file_name`是"abc.txt",可以将printf语句移动到第二次对`file_name`赋值之后,即:
```c
file_name = strtok(buffer, " ");
if(strncmp(file_name,"download",8) != 0) {
printf("Invalid command from client\n");
close(connfd);
}
file_name = strtok(NULL, " ");
printf("File name requested: %s\n", file_name);
```
阅读全文