POSIX C中的打开功能不起作用

时间:2013-09-22 21:05:36

标签: c linux ubuntu file-io posix

我正在尝试让我的open函数使用这个程序,它正确地读取输入,因为我可以看到我输入文件名后打印文件名,但我的打开函数一定是错的,我似乎无法弄清楚它有什么问题,它不断返回-1并退出。我试图打开一个名为tester.txt的文件,我正在使用运行ubuntu的虚拟机。任何帮助表示赞赏,谢谢大家。

#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/types.h>
#include <unistd.h>

int main(){

int bytes_read = 1;
int nbytes = 32;
char buffer[32];

char s[] = "name";
printf("Welcome to File Copy by %s!\n", s);


char *inputFile = NULL;
puts("Enter the name of the source file: ");
bytes_read = getline(&inputFile, &nbytes, stdin);
//if fail exit
int inputOpen = open("inputFile", O_RDONLY);    
//if fail exit

if (inputOpen == -1){
    printf("file not found.\n");
    return -1;
}
    return 0;
    }

1 个答案:

答案 0 :(得分:1)

无论输入什么作为文件名,您都会尝试打开名为“inputFile”的文件。您需要添加代码以从输入的行中提取文件名。

这将是一种方式:

char *eol;


bytes_read = getline(&inputFile, &nbytes, stdin);
eol = strchr(inputFile, '\n');
if (eol != NULL) // remove end of line
    *eol = 0;
int inputOpen = open(inputFile, O_RDONLY);