Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pointers 在c中强制转换结构_Pointers_Casting_Struct - Fatal编程技术网

Pointers 在c中强制转换结构

Pointers 在c中强制转换结构,pointers,casting,struct,Pointers,Casting,Struct,我需要一个用户结构数组 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 addToUsersArr

我需要一个用户结构数组

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));
}
}
struct用户{
字符*用户名;
};  
结构用户[10]//用户结构数组
int main(int argc,char**args){
int initUsersArray();
char*username=“Max”;
addToUserArry(用户名);
}
int addToUsersArrry(用户名){
int i;
i=0;
结构用户tmp;

对于(i;i在这里,我为您修复了它。别忘了区分和学习一些东西。不要只是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;
}
#包括
#包括
类型定义结构用户{
字符*用户名;
}用户;
user*users;//用户结构的数组
int addToUserArray(字符*用户名){
int i=0;

对于(;I你确定你复制的代码正确吗?我已经更新了一行,但其余的代码都被正确复制了。我是c新手,所以如果我写了“奇怪”的代码,请不要感到惊讶。你应该使用空字符串或“\0”而不是NULL,即“”。嗨,谢谢你的修复。使用“.”而不是“->”有什么区别吗?这只是一个简写(语法糖)用于
*(pointerToSomething).field
好的,但是可以“还有另一个意思吗?看看你的代码,我试图检查用户名是否已经存在,是否出现了分段错误。请看我更新的答案。我鼓励你一步一步地浏览这段代码并搜索所有不熟悉的内容。我不熟悉的是,只有当我将字符串与空字符串进行比较时,我才会出现分段错误。谢谢你ry much(hvala ti puno;)