2

ユーザー構造体の配列が必要です。

struct user {
    char *username;
};  

struct user users[10]; //Array of user structs

int main(int argc, char **args) {
    int initUsersArray();        
    char *username = "Max";
    addToUsersArrry(username);

}



int addToUsersArrry(username) {
int i;
i = 0;
struct user tmp;    
for(i;i<10;i++) {
    if(users[i] != NULL) 
        if(strcmp(*users[i].username,username)==0)
            return -1;
}
i = 0;
for(i;i<10;i++) {
    if(users[i] = NULL) { 
        users[i]=tmp;
        users[i].username=username;
        return 1;
    }   

}   

}

int initUsersArray() {  
int i;
i=0;
struct user tmp;

for(i;i<10;i++) {
    users[i] = (struct user*) calloc(1,sizeof(tmp));
}
}

私の最初の質問は、私が行ったようにユーザー配列を NULL で初期化する正しい方法であるかどうかです。2 番目の問題は、*users[i].username および特定の位置でユーザーを取得/設定するコードの他の部分が機能しないことです。よろしく

4

1 に答える 1

1

ここで、私はあなたのためにそれを修正しました。そして、何かを比較して学ぶことを忘れないでください。単に c/p しないでください。

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

typedef struct user {
    char *username;
} user;

user *users; //Array of user structs

int addToUsersArray(char *username) {
int i = 0;

for(; i<10; i++) {
    if(users[i].username=='\0') {
        users[i].username = username;
    return 1;
    } else if(strcmp(users[i].username, username) == 0)
    return -1;
}
return -1;
}

void initUsersArray() {  
    users = (user*) calloc(10, sizeof(user)); //10 of them
}

int main(int argc, char** argv) {
    initUsersArray();        
        char *username = "Max";
        addToUsersArray(username);
    username = "Ma1x";
    addToUsersArray(username);
    printf("%s\n",users[0].username);
    printf("%s\n",users[1].username); 
    return 1;
}
于 2012-05-18T14:18:29.417 に答える