0

これは私のコードです

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

           /*
            boolean ceksama(char c[20])
            {

              FILE *f;
              int retval;
              boolean same=false;
              char ccarray[20];
              int i,j;
              char cc;

            f=fopen("filepelanggan.exe","r");

            j=0;
            while(c[j]!='\0')
             {
                j=j+1;
             }

            retval=fscanf(f,"%c",&cc);
            while((retval!=EOF)&&(!(same)))
             {
                i=1;
                while(cc!='\0');
                  { 
                     retval=fscanf(f,"%c",&cc);
                     ccarray[i]= cc;
                     i=i+1;
                  }

                if(i!=j)
                  {
                      same=false;
                  }
                else
                  {
                      if(ccarray[i]=c[j])
                            {
                            same=false;
                        }
                      else
                        {
                             same=true;
                        }
                  }
            }

            fclose(f);
            return same;
            }

            */

            int main()
            {

              FILE *f;
              char nama[20];
              int retval;
              char c;
              int i=1;


            /*algoritma*/
            f=fopen("customerfile.txt","a");

            printf("\nenter your name:");
            scanf("%c",&c);

            /*
            if (!(ceksama))
            {*/

            while (c=='\n')
              {
                 scanf("%c",&c); 
              }

                            while (c!='\n')
              {
                  nama[i]=c;
                  i=i+1;
                  scanf ("%c",&c);
              }
            nama[i]=c;
            i=1;

                            while(nama[i] != '\n')
              {
                  retval=fprintf(f,"%c",nama[i]);
                  i=i+1;
              }
            fprintf(f,"%c",'\0');
            fprintf(f,"%c",'\n');

            /*}
            else
              {
                  printf("data has been registered");
               }*/
            fclose(f);

            }

私のコードでは、名前を入力して外部ファイルに保存したいのですが、名前が外部ファイルに既に存在するかどうかにかかわらず、後で名前入力でチェックされます

main私のメインプログラムであり、その上に名前が既に存在するかどうかを確認する関数があります。しかし、プログラムが正常に動作するように、コメント モードでチェック機能を作成します。

問題は、チェック機能をアクティブにすると、プログラムは引き続き機能しますが、既に登録されているかどうかに関係なく、名前を入力しようとするたびに、常に登録済みと表示されるため、その名前を外部ファイルに保存できないことです

チェック機能を無効にしている間(コメントモードにする)、プログラムは正常に動作し、名前を外字に保存します。しかし、その名前がす​​でに存在するかどうかはチェックしませんでした。したがって、名前は 2 回以上格納される場合があります。

このプログラムを作成するための私のアルゴリズムは、名前を入力すると、文字で読み取られるようになっています (先生が string や string.h の使用を禁止しているため)。したがって、文字ごとに外部ファイルに保存する必要があります。確認の際、文字で確認もしましたがダメでした

自分から宣言boolean.hします

4

1 に答える 1

3

と を比較するccarraycは、 を使用する必要がありますstrcmp。実際には、比較すらしていませんが、代入を行っています (「==」ではなく「=」)。私はラインについて話している:

if(ccarray[i]=c[j])

次のようになります。

if (strcmp(ccarray, c))

あなたのアルゴリズムをよく理解していれば。

于 2012-11-26T12:39:05.667 に答える