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);