这真让我抓狂。我编写了一个程序,它接受用户输入的文件名。它在我的 ~/documents/cs 目录中执行时按预期运行,但在我的 ~/documents/cs/assign5 目录中失败。这对我来说完全没有意义。为什么程序的行为会根据它所在的目录而有所不同?
在父目录中执行的良好输出:
./a.out - file2
Enter the filename: file1
FILE1
FILE2
assign5 目录的错误输出:
./a.out - file2
Enter the filename: file1
file1
n: No such file or directory
我什至尝试将 assign5 目录重命名为其他目录,并且效果很好。
该程序基本上采用两个命令行参数。如果存在“-”命令行参数,它会询问文件名。然后它将两个文件的内容打印到标准输出。这是程序失败的地方(仅在assign5目录中......)。似乎当程序在assign5目录中运行时,userInput变量存储的值是“n”而不是“file1”。为什么!?
if(strcmp(argv[1], "-") == 0) // use standard-in for input file 1
{
printf("Enter the filename: ");
fflush(NULL);
read(STDIN_FILENO, userInput, sizeof(userInput));
userInput[strlen(userInput)-1] = '\0';
if((input_file1 = open(userInput, O_RDONLY)) < 0)
{
perror(userInput);
exit(1);
}
更新:
我在名为“assign5”的目录中的远程 linux 服务器上运行完全相同的代码,并按预期编译和执行。那么,我的电脑有什么问题吗?