C open()sycall为变量路径参数返回-1

C open()sycall为变量路径参数返回-1,c,C,正在尝试使用open()打开文件。按如下方式调用时返回正确的文件描述符: fd = open("a.txt", O_RDONLY); 但是当我们使用从strtok()生成的令牌时,它返回-1: token = strtok(NULL, " "); fd = open(token, O_RDONLY); 在注释中正确猜测:标记实际上与“a.txt”不是同一个字符串,但在末尾包含额外的空格,这使得打印为字符串时很难看到。您是否尝试打印标记以查看它是否符合预期?是的,使用printf(“文件:%s

正在尝试使用open()打开文件。按如下方式调用时返回正确的文件描述符:

fd = open("a.txt", O_RDONLY);
但是当我们使用从strtok()生成的令牌时,它返回-1:

token = strtok(NULL, " ");
fd = open(token, O_RDONLY);

在注释中正确猜测:
标记
实际上与
“a.txt”
不是同一个字符串,但在末尾包含额外的空格,这使得打印为字符串时很难看到。

您是否尝试打印标记以查看它是否符合预期?是的,使用
printf(“文件:%s\n”,标记)我们得到输出
文件:a.txt
@John3136。至于这个问题,我们想知道是否有什么事情我们搞砸了,我们没有意识到。调用失败了,所以请使用
perror
(或类似)来找出失败的原因。是的,请按照上面的建议检查
errno
,并确保令牌实际上只是
“a.txt”
,并且没有从
printf
中看不到的任何空格或不可打印字符。(我猜它的结尾是换行。)@Arkku是对的,它的结尾是回车和换行。问题是,它是为了响应发送给服务器(对于类)的“GET a.txt”消息,没有考虑换行符空格。