gpt4 book ai didi

c - stat 系统调用报告 "No such file or directory"

转载 作者:行者123 更新时间:2023-12-04 11:34:01 25 4
gpt4 key购买 nike

我正在做家庭作业,但遇到了一些小问题。

我正在尝试从标准输入中读取文件名,然后stat 文件以获取大小(根据作业要求):

#define BUFFSIZE 4096

int
main(void) {
int n;

char buffer[BUFFSIZE];

struct stat buf;

while ((n = read(STDIN_FILENO, buffer, BUFFSIZE)) > 0) {
stat(buffer, &buf);
perror("stat");
}
}

这是运行时的输出(我输入了文件名 file):

file
stat: No such file or directory

但是如果我尝试这样的事情:

#define BUFFSIZE 4096

int
main(void) {
int n;

char buffer[BUFFSIZE] = "file";

struct stat buf;

stat(buffer, &buf);
perror("stat");
}

我得到:

stat: Success

名为 file 的文件位于我运行程序的目录中。

为什么读取字符串“file”和将数组初始化为字符串“file”会有区别?

最佳答案

在调用 stat() 之前将 buffer 的值打印到标准输出:

printf("[%s]\n", buffer);

这不会是您所期望的,因为 read() 不会为您终止 buffer。在 read() 之前初始化 buffer

不确定为什么要在 read() 上循环,因为您应该在调用 stat() 之前获取文件的完整名称。如果您没有被迫使用 read(),请考虑使用 fgets() .

关于c - stat 系统调用报告 "No such file or directory",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9104846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com