2

我是 C 程序和 linux 的新手,我们如何编译和运行这个程序?

我已经尝试过gcc example.c了,./a.out但它给出了一个错误input file cannot be opened(我在 read 方法中写了这个错误)

// example.c
int main(int argc, char *argv[])
{
    char* input = argv[1];
    read(input);

    char* output = argv[2];
    write(output);

    return 0;
} 

谢谢。

4

2 回答 2

3

您的程序不会很好地运行 - 例如,您没有为readand提供足够的参数write(假设您的意思是调用 POSIX read(2)and write(2))。

要回答您的实际问题,问题似乎是您没有提供任何论据。你需要像这样运行它:

./a.out FILE1 FILE2

替换FILE1为输入文件FILE2的名称和输出文件的名称。

于 2012-10-13T18:23:28.080 回答
1

首先read()write()两者都采用 3 个参数(仅给出一个)。

其次,它应该像这样使用:

int ifilehandle = open(argc[1],O_RDONLY,S_IREAD);
int ofilehandle = open(argc[2],O_WRONLY,S_IWRITE);
char buffer[32767];
read(ifilehandle,&buffer,32766);
write(ofilehandle,&buffer,32766);
close(ifilehandle);
close(ofilehandle);

第三,应该像这样调用 a.out:

./a.out filename1.extension filename2.extension
于 2012-10-13T18:40:11.933 回答