C 具有路径名和变量文件名的fopen不工作

C 具有路径名和变量文件名的fopen不工作,c,linux,fopen,relative-path,C,Linux,Fopen,Relative Path,我在C中看到了一些类似的问题,但它们没有回答我的问题。 一致性错误:没有这样的文件或目录。 用户输入为aFile.txt,我确认此文件与程序存在同一目录中。 如果我手动更改: input_file = fopen(path, "r");<br/> FGET将包含换行符,所以很可能这就是杀死它的原因。删除结尾处的换行符,它应该会起作用。fgets将包含换行符,因此很可能这就是导致其失效的原因。删除末尾的换行符,它应该可以工作。这是正在读取的新行。查看这一点的一个好方法是打印带有前导和

我在C中看到了一些类似的问题,但它们没有回答我的问题。
一致性错误:没有这样的文件或目录。 用户输入为aFile.txt,我确认此文件与程序存在同一目录中。
如果我手动更改:

input_file = fopen(path, "r");<br/>

FGET将包含换行符,所以很可能这就是杀死它的原因。删除结尾处的换行符,它应该会起作用。

fgets将包含换行符,因此很可能这就是导致其失效的原因。删除末尾的换行符,它应该可以工作。

这是正在读取的新行。查看这一点的一个好方法是打印带有前导和尾随“:”的文件名:

打印的内容是:

Server:junk Username$ ./a.out 
Enter filename, max 20 characters: test.txt
path = :./test.txt
:
Error: No such file or directory

注意第二个“:”在新行上。

它是正在读取的新行。查看这一点的一个好方法是打印带有前导和尾随“:”的文件名:

打印的内容是:

Server:junk Username$ ./a.out 
Enter filename, max 20 characters: test.txt
path = :./test.txt
:
Error: No such file or directory

请注意,第二个“:”位于新行。

最有可能的情况是路径变量中有新行字符(fgets包括它)。删除尾随的空白,它应该会起作用:“如果一个换行符被读取,它会被存储到缓冲区。”当然,它是一个重复的。。。除非您不知道fgets问题…:p路径变量中很可能有新行字符(fgets包括它)。删除尾随的空白,它应该会起作用:“如果一个换行符被读取,它会被存储到缓冲区。”当然,它是一个重复的。。。除非您不知道fgets问题…:P
printf("path = :%s:\n", path);
Server:junk Username$ ./a.out 
Enter filename, max 20 characters: test.txt
path = :./test.txt
:
Error: No such file or directory