首页 > 解决方案 > 打印 FILE 变量的内容

问题描述

我正在设置一个指向变量指针数组的指针,这些变量将打开文件并计算单词。我遇到的问题是如何在输出中打印文件名。单词的计数有效(减去一些小的双空格等)。

这些文件作为命令行参数输入。这是代码:

FILE **Files = malloc(sizeof(FILE *) * (count));                            //Array of file pointers

for (i = 0 ; i < count ; i++)
{       
    Files[i] = fopen(argv[i + 1], "r");
}
for (i = 0 ; i < count ; i++)
{
    wordCount = countWords(Files[i]);
    printf("File %s: number of words is: %d\n", Files[i], wordCount);       
}

如果 fopen == NULL 以保持简短,我省略了错误检查。我尝试了 *Files[i]、*(&Files[i]) 和其他一些尝试打印出变量的内容。有没有办法将 FILE * 变量打印为字符串?

标签: c

解决方案


由于argv[i + 1]是文件名,因此您需要打印argv[i + 1]. 您不想打印Files[i],因为它不是指向文件名的指针或与文件名有任何关联的任何内容。

您可能没有意识到这一点,但文件名并不能唯一标识文件。一个文件可以根本没有名称(例如,如果它在打开时从它所在的唯一目录中删除)或可以有多个名称(例如,如果它硬链接到多个目录中)。尝试从文件转到文件名并不简单,只有在有特定原因时才应该这样做。


推荐阅读