2006-c-五

//优化版
#include <stdio.h>
int main()
{
    FILE *fp;
    int num, numCur, flag = 0;
    printf("\nInput a integer: ");
    scanf("%d", &num);

   //"r+" 以可读写方式打开文件,该文件必须存在。
   //"w" 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
   //"a"为追加写、只写
   //"a+"为追加写、可读可写
    if ((fp = fopen("a.dat", "a+"))!=NULL)
    {
        while (!feof(fp))
        {
            fscanf(fp, "%d", &numCur);
            if (numCur == num)flag = 1;
        }
        if (!flag)
        {
            fprintf(fp, " %d", num);  //因为要将这个数字写到文件中(相当于计算机input),所以用的是fp1
            fclose(fp);
        }
    }
}



/*五.试编写一个程序,从键盘上输入一个整数,在整数文件"a.dat"中查找,要求:
     1.若文件"a.dat"不存在,则建立一个新文件"a.dat",将该整数写入文件;
     2.若文件中找到了这个整数,则显示数据存在,否则将该数据写入文件。*/
#include <stdio.h>
int main()
{
    FILE *fp1, *fp2;
    int num, numCur, flag = 0;
    printf("\nInput a integer: ");
    scanf("%d", &num);

   //“r+” 以可读写方式打开文件,该文件必须存在。
   //“w” 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
    if ((fp1 = fopen("a.dat", "r+"))==NULL)
    {
        if((fp2 = fopen("a.dat", "w")) != NULL)
        {
            printf("No File! Create it and write the number into it!\n");
            fprintf(fp2, "%d", num);
            fclose(fp2);
        }
    }
    else
    {
        printf("\nYes!Find the File!\n");
        while (!feof(fp1))
        {
            fscanf(fp1, "%d", &numCur);
            if (numCur == num)
            {
                printf("\nFind the number: %d\n", num);
                flag = 1;
            }
        }
        if (!flag)
        {
            printf("\nNo find the number: %d append it into the file!\n", num);
            fprintf(fp1, " %d", num);  //因为要将这个数字写到文件中(相当于计算机input),所以用的是fp1
            fclose(fp1);
        }
    }
}