POSIX C中的Open函数不工作
我试图让我的open函数与这个程序一起工作,它正在正确地读取输入,因为我可以看到我在键入文件名后是否打印了文件名,但我的open函数肯定是错误的,我似乎无法找出它的错误,它一直返回-1并退出。我正试图打开一个名为tester.txt的文件,我正在使用一个运行ubuntu的虚拟机。感谢您的帮助,谢谢大家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
#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是一个变量。