最大数量" C"

时间:2014-11-10 21:09:47

标签: c file-io

我是编程的先驱,我有一个任务。我需要找到文件in.txt中包含内容的最大数量:2,5,4,6,7,10,然后将其写入文件out.txtLanguage C。问题是:

  1. 我在编程方面和英语方面都不是很好(所以如果你试着用英语解释一些东西我不认为我会理解每一个字)
  2. 最后在da屏幕上应该有最大数字,但它显示了第一个数字
  3. 这不是我的第一个主题,每次主持人给出一个链接我都可以阅读一些文字并找到答案,但看看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);
    }
    

2 个答案:

答案 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;
}