我目前正在大学学习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;**
}
答案 0 :(得分:2)
尝试open(argv[1], O_RDWR);
- 您无需指定arg的类型或返回值。
...而且我假设**只是为了突出问题区域 - 如果没有,它们也应该去...编辑:只是注意到你在问题中说过了!
答案 1 :(得分: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
}
答案 2 :(得分:0)
打开调用会将 HANDLE 返回到 int 类型的指定文件。因此,您只需要声明 int 类型 HANDLE 以从打开收集。所以,
int FileDesc ;
FileDesc = open( argv[1], O_RDWRD ) ;
// Check for Errors here