为什么我不能从文件中读取?

时间:2014-03-30 15:29:56

标签: c file

我试图从文件中读取几个字节,然后将它们打印到屏幕,但read()函数由于某种原因继续返回-1。

以下是代码:

#include<stdio.h> 
#include<sys/types.h> 
#include<fcntl.h>
#include<stdlib.h> 

int main(int argc, char* argv[]) {

    char buff[100];

    int file_desc=open(argv[1], O_RDONLY);
    if (file_desc<0) {
        printf("Error opening the file.\n");
        exit(-1);
    }
    printf("File was successfully opened with file descriptor %d.\n", file_desc);


    int ret_code=read(argv[1],buff,20);
    if (ret_code==-1) {
        printf("Error reading the file.\n");
        exit(-1);
    }

    int i;
    for (i=0; i<20; i++) {
        printf("%c ",buff[i]);
    }
    printf("\n");
}

这个输出是:

File was successfully opened with file descriptor 3.
Error reading the file.

我试图读取的文件肯定大于20个字节 这可能是什么问题?

1 个答案:

答案 0 :(得分:4)

如果查看read的参数,第一个参数应该是打开的文件描述符,而不是文件名;

int ret_code=read(file_desc,buff,20);

......应该会更好。