gpt4 book ai didi

控制光标在文本文件中的位置

转载 作者:太空宇宙 更新时间:2023-11-04 04:37:50 26 4
gpt4 key购买 nike

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


void level (int n , FILE*f , FILE*f2)
{
int i=0 ;
int k=0 ;
for (i=0 ; i< n ; i++ )
{
if (k != '\n')
{
k=fgetc(f) ;
fputc(k,f2) ;

while ( k!='\\'&& k!=EOF && k!='\n' )

{
k=fgetc(f) ;
fputc(k,f2) ;
}

}
else
{

break ;
}
}
}


void menu (int n , FILE*f , FILE*f2)
{
char ch [1000] ;
do
{
level(n,f,f2) ;
fputc('\n',f2) ;
}
while (fgets(ch,1000,f)!= NULL ) ;
}

int main()
{

FILE*f=NULL ;
FILE*f2=NULL ;

f = fopen("text.txt","r+") ;
f2= fopen("t.txt","w+") ;

menu(5,f,f2) ;
fclose(f);
fclose(f2);
return 0;

}

文件 f 包含行。每一行都是这种形式 text1\text2\...\.. 文件 f2 是空的,当函数 level 到达一行的末尾时,函数 menu 不会“获取”下一行,但它会获取下一行之后的行,我需要一个解决方案。

最佳答案

因为您正在读取 menu 函数中的下一行,所以您的 level 函数无法再次读取它。最好的解决方案(无需更改太多代码)是让 level 函数接受包含已读行的 char[] 参数,而不是要从中读取的文件。

您还需要将 do ... while 循环更改为 menu 函数内的 while ... 循环。

void level (int n , char* s , FILE*f2)
{
int i=0 ;
char k=0 ;
for (i=0 ; i< n ; i++ )
{
if (k != '\n')
{
k=*(s++) ; // get char from string
fputc(k,f2) ;

while ( k!='\\'&& k!=0 && k!='\n' )

{
k=*(s++) ; // get char from string
fputc(k,f2) ;
}

}
else
{

break ;
}
}
}


void menu (int n , FILE*f , FILE*f2)
{
char ch [1000] ;
while (fgets(ch,1000,f)!= NULL )
{
level(n,ch,f2) ;
fputc('\n',f2) ;
}
}

关于控制光标在文本文件中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29310956/

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