1

我目前正在大学学习 C 语言,所以这是一个家庭作业,但我有一个小问题。我猜我只是误判了语法或遗漏了一些非常明显的东西。我的编译器告诉我有:

常量前的预期声明说明符或“...”

并指向O_RDWR.

我在 Stack Exchange 上进行了谷歌搜索和搜索,但似乎没有任何特定的内容。遵循 C 参考中的语法就可以了。我环顾四周,它说我没有预定义 typedef,但我试过没有用。

我已经根据编译器为导致问题的部分加注了星标**

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>

int main (int argc, char *argv[])
{
    int count;

    printf ("This program was called  \"%s\".\n",argv[0]);

    if (argc > 1)
    {
        for (count = 1; count < argc; count++)
        {
            printf("argv[%d] = %s\n", count, argv[count]);
        }
    }
    else
    {
        printf("The command had no arguments.\n");
    }

    if  (argc == 4)
    {
        printf("There are the correct number of arguments(4)");
    }
    else
    {
        printf("Not enough arguments! please try again");
    }

    **int open(const char *argv[1], O_RDWR);

    return 0;**
}
4

3 回答 3

2

尝试open(argv[1], O_RDWR);- 您不需要指定 arg 的类型或返回值。

...而且我假设**只是为了突出问题区域-如果不是,它们也应该去...编辑:刚刚注意到您在问题中这么说!

于 2012-09-20T23:12:46.450 回答
2
int open(const char *argv[1], O_RDWR); 

你想通过这个声明做什么?编译器将此视为函数声明,而不是函数调用。它失败了,因为 O_RDWR 不是类型名称。如果你需要调用open(),语法应该是这样的:

int fd = open(argv[1], O_RDWR);
if(fd != -1)
{
   // File opened OK. Proceed with file operations.
}
else
{
   // File failed to open. Handle error occured
}
于 2012-09-20T23:17:36.460 回答
0

open调用将 HANDLE 返回到int类型的指定文件。因此,您只需声明一个int类型HANDLE即可从open收集。所以,

int FileDesc ;
FileDesc = open( argv[1], O_RDWRD ) ;
// Check for Errors here
于 2012-09-21T06:11:11.360 回答