我正在尝试让我的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;
}
答案 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);