2

我创建了一个程序,可以在屏幕上顺序显示命令行中列出的所有文件的内容。

但是,当我在终端中运行它时,我实际上无法让它打开我尝试“喂”它的任何文件。

有谁知道我怎样才能让它工作?

这是我在 Mac 上的终端中输入的示例:

"John_Smith-MacBook:Desktop smith_j$ "/Users/smith_j/Desktop/Question 3-28-13 5.10 PM/usr/local/bin/Question" helloworld.txt

Could not open file helloworld.txt for input"

这是我第一次使用终端,如果答案很简单,请原谅我。

这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int byte;
    FILE * source;
    int filect;

    if (argc == 1)
    {
        printf("Usage: %s filename[s]\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    for (filect = 1; filect < argc; filect++)
    {
        if ((source = fopen(argv[filect], "r")) == NULL)
        {
            printf("Could not open file %s for input\n", argv[filect]);
            continue;
        }
        while ((byte = getc(source)) != EOF)
        {
            putchar(byte);
        }
        if (fclose(source) != 0)
            printf("Could not close file %s\n", argv[1]);
    }    
    return 0;
}
4

1 回答 1

0

查看errno[probably with perror()] 的值,您就知道它为什么无法打开。

简单的例子:

perror("fopen failed:");
printf("errno = %d.\n", errno);

它将在文本版本的 errno 条件(提供的库)前加上“fopen Failed:”,然后给出特定的 errno 值。

上面的命令行文本看起来很可疑,请检查它是否正确。更好的是,尝试使用更简单的命令行调用您的程序,例如,当前目录中的一个文件包含您的二进制文件。

将二进制程序和数据文件放在同一目录中,而不是所有长路径名。然后,从那个位置做./myprog filename.txt

这将减少错字干扰执行的机会。

于 2013-03-29T03:36:23.733 回答