C 我能传递什么给fopen?

C 我能传递什么给fopen?,c,file-handling,C,File Handling,我可以将字符数组传递给fopen?例如: fopen(s, "r"); 其中,s声明为字符数组,以null结尾 的签名是: 因此,filename参数必须是有效的C字符串。仅此而已。s必须是指向以null结尾的字符数组的指针 政府证实了这一点 FILE *fopen(const char *path, const char *mode); 您可以看到它必须以null结尾,因为没有给出size参数。C11标准中规定的fopen的确切签名是: FILE *fopen(const char

我可以将字符数组传递给
fopen
?例如:

    fopen(s, "r");
其中,
s
声明为字符数组,以null结尾

的签名是:


因此,
filename
参数必须是有效的C字符串。仅此而已。

s
必须是指向以null结尾的字符数组的指针

政府证实了这一点

FILE *fopen(const char *path, const char *mode);

您可以看到它必须以null结尾,因为没有给出
size
参数。

C11标准中规定的
fopen
的确切签名是:

FILE *fopen(const char * restrict filename, const char * restrict mode);
filename
mode
都只是指向以null结尾的
char
数组(也称为C字符串)的指针

出现
restrict
关键字似乎表明字符串不应该重叠,这没有多大意义,因为它们都是
const
限定的


char
数组传递给
fopen
时,将传递指向其第一个元素的指针。此步骤称为数组衰减为指针。每当在表达式中使用数组时,也会发生同样的情况,除了作为
sizeof

s
的参数外,如果它表示以NUL结尾的
char
序列,则可能是您想要的任何值。当您将变量传递给函数时,必须记住两件事:变量的类型和变量的值。字符数组适合该类型。这还不够。必须正确设置其值。请阅读手册。。。谷歌。。。任何东西这不难研究。也许RTFM会有帮助?详细信息:代码无法传递数组。而是使用
chars[100]。。。福彭(s,“r”),代码将
s[0]
的地址传递给
fopen()
。该指针需要指向以空字符结尾的字符序列。严格来说,它需要的是指针,而不是C字符串,C字符串是
char
的数组。
FILE *fopen(const char * restrict filename, const char * restrict mode);