0

わかりました。構造とポインターを含めました。これが私が理解しようとしていることです。最大5人のプロファイルを保存する必要がありますが、ポインターを使用しているときにこれらを配列に保存する方法がわかりません。次のようにできるポインタがありません:strcpy(user [0] .UserName、 "whatevername"); strcpy(user [0] .UserName、 "whateverpwd");

しかし、構造を指すポイントを使用しながら、配列内のどこに情報が必要かを指定するにはどうすればよいですか。これが理にかなっているといいのですが、これ以上説明できないと思います。

struct profile
{
char First[15];
char Last[15];
char Pwd[10];
char UserName[10];
};

struct profile user[100];
struct profile *puser;
puser=&user[0];



void add_user(struct profile *puser)
{
 int i = 0;
 int j = 0;
 int quit = 0;
 char fname[30];
 char lname[30];
 char username[30];
 char password[30];

 do
 {
 printf("Enter the first name of the user:\n");
 fgets((puser+i)->First,15, stdin);
 printf("Enter the last name of the user:\n");
 fgets((puser+i)->Last, 15, stdin);
 printf("Enter the username:\n");
 fgets((puser+i)->UserName, 30, stdin);
 printf("Enter the password:\n");
 fgets((puser+i)->Pwd, 30, stdin);


 printf("the first name is: %s\n", (puser+i)->First);
 printf("the last name is: %s\n", (puser+i)->Last);
 printf("the user name is: %s\n", (puser+i)->UserName);
 printf("the password name is: %s\n", (puser+i)->Pwd);
 j++;
 printf("enter 0 to exit 1 to continue:");
 scanf("%d", &quit);
 if(quit == 0)
 printf("goodbye");
 i++;
 getchar();
 }while(quit == 1);
}
4

1 に答える 1

1

これを試して:

#include <stdio.h>

typedef struct
{
char First[15];
char Last[15];
char Pwd[10];
char UserName[10];
}profile;

profile user[100];
profile *puser = user;

void add_user(profile *puser);

void add_user(profile *puser)
{
 int i = 0;
 int j = 0;
 int quit = 0;
 char fname[30];
 char lname[30];
 char username[30];
 char password[30];

 do
 {

     printf("Enter the first name of the user:\n");
     fgets(puser[i].First,15, stdin);
     printf("Enter the last name of the user:\n");
     fgets(puser[i].Last, 15, stdin);
     printf("Enter the username:\n");
     fgets(puser[i].UserName, 30, stdin);
     printf("Enter the password:\n");
     fgets(puser[i].Pwd, 30, stdin);
     printf("enter 0 to exit 1 to continue:");

     scanf("%d", &quit);
     getchar();
     i++;
 }while(quit == 1);

 for( j = 0; j < i; j++ )
 {

     printf("first name[%d] is: %s\n", j,(puser+j)->First);
     printf("last name[%d] is: %s\n", j,(puser+j)->Last);
     printf("user name[%d] is: %s\n", j,(puser+j)->UserName);
     printf("password[%d] is: %s\n", j,(puser+j)->Pwd);
 }

 printf("Goodbye\n");

}


int main(int argc, char *argv[])
{

    add_user(puser);

    return 0;
}
于 2012-04-22T23:58:55.283 に答える