c - 在 C 中省略参数名称
问题描述
因此,我将在 C 中查看文件 I/O 的一些代码,并对临时 cat 函数的一行感到困惑。
我主要对主要线路感到困惑:
void filecopy(FILE *, FILE *);
我们没有为 ifp 和 ofp 指定要传入的文件的名称,所以我不确定这一行在做什么。
/* filecopy: copy file ifp to ofp */
void filecopy(FILE *ifp, FILE *ofp) {
int c;
while((c = getc(ifp)) != EOF){
putc(c, ofp);
}
}
/* cat: concatenate files, version 1*/
int main(int argc, char **argv) {
FILE *fp;
void filecopy(FILE *, FILE *);
if(argc == 1){ /*no args: copy standard input */
filecopy(stdin, stdout);
}else{
while(--argc > 0){
if((fp = fopen(*++argv, "r")) == NULL){
printf("cat: can't open %s\n", *argv);
return 1;
} else{
filecopy(fp, stdout);
fclose(fp);
}
}
}
return 0;
}
解决方案
这一行:
void filecopy(FILE *, FILE *);
是一个函数声明,用于允许其他代码调用一个函数。它指定存在具有给定名称和给定数量的已知类型参数的函数。调用函数时不需要这些参数的名称。它们仅在您定义函数时才需要,即当您指定函数体时。
请注意,在此示例中,不需要声明,因为该函数已在文件的前面完全定义。
推荐阅读
- fonts - 如果我为我们的 Web 应用禁用 webkit-font-smoothing,它对 Windows 用户来说会看起来很糟糕吗?
- node.js - 节点子进程未同时执行
- android - 如何使用 Kotlin 使用 LiveData 和 Room Android 测试 ViewModel?
- mysql - 创建 mysql 存储过程给出语法错误
- rust - 使用害虫解析器为变量构建语法
- c++ - c/c++ 中的宏与 MATLAB 中的脚本相同吗?
- reactjs - 如何在编辑器 react-draft-wysiwyg 中更新状态
- python - Kivy - 如何在 ModalView 内向 ScrollView 添加多个按钮?
- python - 如何在 Python 中解析不正确的 JSON?
- python - 网络爬虫运动-Python Beautiful Soup 参考