-1

重複の可能性:
scanf: “%[^\n]” は 2 番目の入力をスキップしますが、“ %[^\n]” はスキップしません。なぜ?

基本的に、顧客の詳細を入力する顧客構造体があり、そのうちの 1 つは住所です。これはグラフィックのない基本的なテキスト プログラムなので、もちろんアドレスは文です。

scanf("%[^\n]",&VARIABLE)以前のプログラムで機能したため、メソッドを使用しようとしています。ただし、ここでは、入力がスキップされています。この入力を取得する前にバッファをフラッシュしようとしましたが、違いはありませんでした。また、別の文字列を作成してそれに入力を渡し、データを構造体にコピーしようとしましたが、どちらも機能しませんでした。

これが私のコードです - 問題は4番目に発生していscanf("%[^\n]",&myCust.address)ます:

void addNewCustomer()
{
    struct customer myCust;
    printf("\n\nNEW CUSTOMER ADDITION\n");
    printf("\nEnter customer id : ");
    scanf("%s",&myCust.idNumber);
    printf("\nEnter customer name : ");
    scanf("%s",&myCust.name);
    printf("\nEnter customer surname : ");
    scanf("%s",&myCust.surname);
    fflush(stdin);
    printf("\nEnter customer address : ");
    scanf("%[^\n]",&myCust.address);
    printf("\nEnter customer telephone : ");
    scanf("%s",&myCust.telephone);
    printf("\nEnter customer mobile : ");
    scanf("%s",&myCust.mobile);
    printf("\nEnter customer e-mail : ");
    scanf("%s",&myCust.email);

    FILE *fp;

    fp = fopen("/Users/alexeidebono/Dropbox/Customer_Application/customers.dat","a");
    if (fp == NULL) {
        printf("The File Could Not Be Opened.\n");
        exit(0);
    }
    else{
        printf("File Successfully Open\n");
   fprintf(fp,"%s*%s*%s*%s*%s*%s*%s#\n",myCust.idNumber,myCust.name,myCust.surname,myCust.address,myCust.telephone,myCust.mobile,myCust.email);
    fclose(fp);
    printf("Writing successfully completed and the file is closed!!\n");
   }
}

ここに私の構造体コードが必要な場合は、それがあります(ただし、構造体自体がこの問題の原因であるとは思いません)

struct customer
{
    char idNumber[11]; 
    char name[11];
    char surname[15];
    char address[30];
    char telephone[14];
    char mobile[14];
    char email[21];


};
4

3 に答える 3