POSIX C中的Open函数不工作

POSIX C中的Open函数不工作,c,linux,ubuntu,file-io,posix,C,Linux,Ubuntu,File Io,Posix,我试图让我的open函数与这个程序一起工作,它正在正确地读取输入,因为我可以看到我在键入文件名后是否打印了文件名,但我的open函数肯定是错误的,我似乎无法找出它的错误,它一直返回-1并退出。我正试图打开一个名为tester.txt的文件,我正在使用一个运行ubuntu的虚拟机。感谢您的帮助,谢谢大家 #include <stdio.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/typ

我试图让我的open函数与这个程序一起工作,它正在正确地读取输入,因为我可以看到我在键入文件名后是否打印了文件名,但我的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;
    }
#包括
#包括
#包括
#包括
#包括
int main(){
int bytes_read=1;
int nbytes=32;
字符缓冲区[32];
字符s[]=“名称”;
printf(“欢迎使用%s!\n”,s)复制文件);
char*inputFile=NULL;
puts(“输入源文件的名称:”);
bytes\u read=getline(&inputFile,&nbytes,stdin);
//如果失败退出
int inputOpen=打开(“仅输入文件”);
//如果失败退出
如果(inputOpen==-1){
printf(“未找到文件。\n”);
返回-1;
}
返回0;
}

无论输入的文件名是什么,您都会尝试打开一个名为“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);

当我尝试使用该方法时,我收到一条警告,说我包含了一个“内置函数”strchr的不兼容隐式声明,这解决了问题,但我仍然遇到与以前相同的问题,inputOpen不断返回-1@user2739431显示固定代码。我无法调试看不到的代码。int inputOpen=open(inputFile,Ordonly);inputFile是一个变量。