gpt4 book ai didi

c - 由于无限循环而卡在函数中

转载 作者:太空宇宙 更新时间:2023-11-04 03:40:17 25 4
gpt4 key购买 nike

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void dossier (FILE*f,FILE*f2)
{
char k ;

k=fgetc(f) ;
fputc(k,f2) ;
printf("here%c",k) ;

while ( k!='\\')
{
k=fgetc(f);
fputc(k,f2);
}
}

void dossierp(FILE*f,FILE*f2)
{
char ch [1000] ;
do
{
dossier(f,f2) ;
}
while (fgets(ch,1000,f) !=NULL) ;
}

int main()
{

FILE*f=NULL ;
FILE*f2=NULL ;
f = fopen("text.txt","r+") ;
f2= fopen("t.txt","r+") ;
dossierp(f,f2);
fclose(f);
fclose(f2);

return 0;
}

文件 f 包含行。每一行都采用这种形式“(text)\text2)\...\”。文件 f2 为空,函数 dossier 有效,但 dossierp 无效,因为它有一个无限循环。为什么?

最佳答案

我认为你的问题是你没有处理 dossier 中的 EOF。因此,在某些情况下,无限循环将在 dossier 函数中,而不是在 dossierp 函数中。

请注意 getc 返回一个 int,而不是一个 charchar 不能表示 EOF

关于c - 由于无限循环而卡在函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29235306/

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