-1

为什么它让我无法打开文件?

4

2 回答 2

3

错误在于 fgets() 在读取字符串中包含换行符。

类似以下内容将用于删除换行符:

int n;

n = strlen(filesIn);
if (n > 0) filesIn[n-1] = 0;
n = strlen(filesOut);
if (n > 0) filesOut[n-1] = 0;
于 2012-10-09T17:06:43.177 回答
3

我猜测这是因为您在此用例中错误地使用了fgets() 。

A newline character makes fgets stop reading, but it is considered a valid character by the function and included in the string copied to str

所以你得到一个带有名称的换行符并试图打开它。

由于这是针对 Linux 的,因此文件名中很可能没有空格,您可以试试这个:

scanf("%s", filesIn);

如果您确实希望使用带空格的文件名,那么fgets()fromstdin是可行的方法,但您必须将其'\n'去掉。

于 2012-10-09T17:07:24.570 回答