gpt4 book ai didi

c - 如何在函数中调用文件指针

转载 作者:行者123 更新时间:2023-11-30 17:36:03 24 4
gpt4 key购买 nike

我需要扫描文件中的字母以形成乱序的单词。一切看起来都不错,但调试器不执行该命令。任何建议将不胜感激。

代码:

void playGame(char array1[SIZE], FILE*aPtr)    
{

aPtr = fopen("words.txt", "r");
int i;
for (i = 0; i < SIZE; i++){
fscanf(aPtr, " %c", array1[i]);
printf("%c", array1[i]);
}
}

这是我在 main 中调用函数的方式

playGame(&scramble[SIZE], inPtr);

数组 scramble[] 被声明为 FILE*inPtr,此外,SIZE 定义为 10。

最佳答案

在您的调用代码中,您有:

FILE *fp = 0;
char game[SIZE];

假设您在函数中打开文件,但没有关闭它,您需要在函数中更改文件,因此调用可能是:

playGame(game, &fp);
if (fp != 0)
fclose(fp);

但是函数应该改为:

void playGame(char array1[SIZE], FILE **aPtr)    
{
FILE *fp = fopen("words.txt", "r");
if (fp != 0)
{
*aPtr = fp;
...other code...
}
}

或者,应该在调用代码中打开和关闭文件,并将文件指针简单地传递给 playGame():

FILE *fp = fopen("words.txt", "r");
if (fp != 0)
{
playGame(game, fp);
fclose(fp);
}

使用此接口(interface),playGame() 中没有 fopen()(或 fclose())调用,这会保持其当前状态接口(interface)(void playGame(char game[SIZE], FILE *fp))。这更有意义。通常,打开文件的函数也负责关闭文件是正确的。也有异常(exception),但并不是全部。

关于c - 如何在函数中调用文件指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22823926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com