我是编程的先驱,我有一个任务。我需要找到文件in.txt
中包含内容的最大数量:2,5,4,6,7,10,然后将其写入文件out.txt
。 Language C
。问题是:
这不是我的第一个主题,每次主持人给出一个链接我都可以阅读一些文字并找到答案,但看看priblem(1)有太多的文字,我不能翻译那些答案(主题) 所以,请帮助我,我是一个菜鸟/我有一些代码:
#include <conio.h>
#include <stdio.h>
main()
{
int N, max;
FILE *F;
F = fopen("in.txt", "r"); // open file
FILE *G;
G = fopen("out.txt", "w"); // open file
fscanf(F, "%d", &max);
while (feof(F))
{
fscanf(F, "%d", &N);
if (max < N)
max = N;
}
printf("max=%d", max); // show the result on the screen
fprintf(G, "%d", max); // put result into out.txt
fclose(F);
fclose(G);
}
答案 0 :(得分:3)
错字:
while(!feof(F))
^--- missing
如果您位于指定文件句柄的末尾,则 feof
会返回TRUE
。由于您刚刚开始阅读该文件,因此最后不,因此feof()
将返回FALSE
,并终止您的循环。你实际上从未读过任何更多的数字。
添加!
使其成为“而不是在文件的末尾,读取数字”。
答案 1 :(得分:0)
检查fopens是否成功。检查scanf是否成功 scanf将在EOF失败并退出循环
#include <stdio.h>
int main ()
{
int N,max;
FILE*F;
F=fopen("in.txt","r"); //open file
if ( F == NULL) { // check if fopen failed
printf ( "could not open in.txt\n");
return 1;
}
FILE*G;
G=fopen("out.txt","w"); //open file
if ( G == NULL) {
fclose ( F);
printf ( "could not open out.txt\n");
return 1;
}
if ( ( fscanf(F,"%d",&max)) == 1) // read an int into max. if success return is 1
{
while( ( fscanf(F,"%d",&N)) == 1) // read an int into N. if success return is 1
{
if(max<N)
{
max=N;
}
}
printf("max=%d",max);//show the result on the screen
fprintf(G,"%d",max); //put result into out.txt
}
fclose(F);
fclose(G);
return 0;
}