0

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

1 回答 1

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);
于 2013-09-22T21:10:17.350 回答